Update setup_final.sh with user provided working config structure

This commit is contained in:
Gemini Bot
2025-12-06 19:03:04 +00:00
parent d7e32026ca
commit c7b7ac042f

View File

@@ -1,21 +1,15 @@
#!/bin/bash #!/bin/bash
# FINAL ATTEMPT Script # FINAL FINAL ATTEMPT
# Uses Mautrix image but switches to Host Networking to bypass Docker NAT issues. # Uses user's known-good config structure, adapted for Docker + Websocket.
# Disables Pings.
# Uses bbctl for tokens.
BRIDGE_SERVICE="telegram" BRIDGE_SERVICE="telegram"
DATA_DIR="data/$BRIDGE_SERVICE" DATA_DIR="data/$BRIDGE_SERVICE"
CONFIG_FILE="$DATA_DIR/config.yaml" CONFIG_FILE="$DATA_DIR/config.yaml"
REG_FILE="$DATA_DIR/registration.yaml" REG_FILE="$DATA_DIR/registration.yaml"
# ... (Token extraction logic as before) ... # ... (Token extraction same as before) ...
# We'll skip the boilerplate for brevity in this thought process,
# but I will write the full script to the file.
if command -v bbctl &> /dev/null; then if command -v bbctl &> /dev/null; then
echo "Found 'bbctl'. Fetching registration..."
BBCTL_OUT=$(bbctl register "sh-$BRIDGE_SERVICE" 2>&1) BBCTL_OUT=$(bbctl register "sh-$BRIDGE_SERVICE" 2>&1)
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
YAML_CONTENT=$(echo "$BBCTL_OUT" | sed -n '/^id:/,$p') YAML_CONTENT=$(echo "$BBCTL_OUT" | sed -n '/^id:/,$p')
@@ -23,20 +17,18 @@ if command -v bbctl &> /dev/null; then
fi fi
fi fi
# Parse tokens
get_yaml_val() { grep "^$1:" "$REG_FILE" | sed 's/^[^:]*: *//' | tr -d '\r'; } get_yaml_val() { grep "^$1:" "$REG_FILE" | sed 's/^[^:]*: *//' | tr -d '\r'; }
REG_ID=$(get_yaml_val "id") REG_ID=$(get_yaml_val "id")
AS_TOKEN=$(get_yaml_val "as_token") AS_TOKEN=$(get_yaml_val "as_token")
HS_TOKEN=$(get_yaml_val "hs_token") HS_TOKEN=$(get_yaml_val "hs_token")
BOT_USERNAME=$(get_yaml_val "sender_localpart") BOT_USERNAME=$(get_yaml_val "sender_localpart")
# Ask API ID/Hash only if not present or empty
if [ -z "$API_ID" ]; then if [ -z "$API_ID" ]; then
read -p "Telegram API ID: " API_ID read -p "Telegram API ID: " API_ID
read -p "Telegram API Hash: " API_HASH read -p "Telegram API Hash: " API_HASH
fi fi
# Config with Ping Disabled and Null Address # USER'S CONFIG (Adapted)
cat <<EOF > "$CONFIG_FILE" cat <<EOF > "$CONFIG_FILE"
homeserver: homeserver:
address: https://matrix.beeper.com/_hungryserv/inswe address: https://matrix.beeper.com/_hungryserv/inswe
@@ -45,29 +37,230 @@ homeserver:
software: hungry software: hungry
http_retry_count: 4 http_retry_count: 4
async_media: true async_media: true
# ADDED FOR DOCKER:
websocket: true websocket: true
ping_interval_seconds: -1 ping_interval_seconds: -1
appservice: appservice:
address: null address: http://localhost:29317
hostname: 0.0.0.0
port: 29317
max_body_size: 1
database: sqlite:////data/bridge.db
id: $REG_ID id: $REG_ID
bot_username: $BOT_USERNAME bot_username: $BOT_USERNAME
as_token: $AS_TOKEN as_token: $AS_TOKEN
hs_token: $HS_TOKEN hs_token: $HS_TOKEN
database: sqlite:////data/bridge.db
ephemeral_events: true
# Beeper usually needs this for WS
async_transactions: true async_transactions: true
metrics:
enabled: false
listen_port: 8000
manhole:
enabled: false
bridge: bridge:
username_template: "${BRIDGE_SERVICE}_{userid}" username_template: ${BRIDGE_SERVICE}_{userid}
displayname_template: "{displayname} ($BRIDGE_SERVICE)" alias_template: ${BRIDGE_SERVICE}_{groupname}
displayname_template: '{displayname}'
displayname_preference:
- full name
- username
- phone number
displayname_max_length: 100
allow_avatar_remove: true
allow_contact_info: true
max_initial_member_sync: 20
max_member_count: 10000
sync_channel_members: false
skip_deleted_members: true
startup_sync: false
sync_update_limit: 0
sync_create_limit: 10
sync_deferred_create_all: true
sync_direct_chats: true
max_telegram_delete: 10
sync_matrix_state: true
allow_matrix_login: true
public_portals: false
sync_with_custom_puppets: false
sync_direct_chat_list: false
double_puppet_server_map:
beeper.com: https://matrix.beeper.com/_hungryserv/inswe
double_puppet_allow_discovery: false
telegram_link_preview: true
invite_link_resolve: false
caption_in_message: true
image_as_file_size: 10
image_as_file_pixels: 5000000
parallel_file_transfer: false
federate_rooms: false
always_custom_emoji_reaction: false
animated_sticker:
target: webp
convert_from_webm: false
args:
width: 256
height: 256
fps: 25
animated_emoji:
target: webp
args:
width: 64
height: 64
fps: 25
encryption:
allow: true
default: true
appservice: true
msc4190: false
require: true
allow_key_sharing: true
delete_keys:
delete_outbound_on_ack: true
dont_store_outbound: false
ratchet_on_decrypt: true
delete_fully_used_on_decrypt: true
delete_prev_on_new_session: true
delete_on_device_delete: true
periodically_delete_expired: true
delete_outdated_inbound: true
verification_levels:
receive: cross-signed-tofu
send: cross-signed-tofu
share: cross-signed-tofu
rotation:
enable_custom: true
milliseconds: 2592000000
messages: 10000
disable_device_change_key_rotation: true
private_chat_portal_meta: default
disable_reply_fallbacks: true
cross_room_replies: false
delivery_receipts: false
delivery_error_reports: false
incoming_bridge_error_reports: true
message_status_events: true
resend_bridge_info: false
mute_bridging: true
pinned_tag: m.favourite
archive_tag: m.lowpriority
tag_only_on_create: true
bridge_matrix_leave: false
kick_on_logout: false
always_read_joined_telegram_notice: true
create_group_on_invite: false
backfill:
enable: true
normal_groups: true
unread_hours_threshold: 720
forward_limits:
initial:
user: 50
normal_group: 100
supergroup: 50
channel: 50
sync:
user: 0
normal_group: 0
supergroup: 0
channel: 0
forward_timeout: 900
incremental:
messages_per_batch: 100
post_batch_delay: 20
max_batches:
user: -1
normal_group: -1
supergroup: 10
channel: -1
initial_power_level_overrides:
user: {}
group: {}
bot_messages_as_notices: true
bridge_notices:
default: false
exceptions: []
relay_user_distinguishers: [🟦, 🟣, 🟩, ⭕️, 🔶, ⬛️, 🔵, 🟢]
message_formats:
m.text: '$distinguisher <b>$sender_displayname</b>: $message'
m.notice: '$distinguisher <b>$sender_displayname</b>: $message'
m.emote: '* $distinguisher <b>$sender_displayname</b> $message'
m.file: '$distinguisher <b>$sender_displayname</b> sent a file: $message'
m.image: '$distinguisher <b>$sender_displayname</b> sent an image: $message'
m.audio: '$distinguisher <b>$sender_displayname</b> sent an audio file: $message'
m.video: '$distinguisher <b>$sender_displayname</b> sent a video: $message'
m.location: '$distinguisher <b>$sender_displayname</b> sent a location: $message'
emote_format: '* $mention $formatted_body'
state_event_formats:
join: $distinguisher <b>$displayname</b> joined the room.
leave: $distinguisher <b>$displayname</b> left the room.
name_change: $distinguisher <b>$prev_displayname</b> changed their name to $distinguisher <b>$displayname</b>
filter:
mode: blacklist
list: []
users: true
command_prefix: '!tg'
management_room_text:
welcome: Hello, I'm a Telegram bridge bot.
welcome_connected: Use `help` for help.
welcome_unconnected: Use `help` for help or `login` to log in.
additional_help: ''
management_room_multiple_messages: false
permissions: permissions:
"*": relay 'beeper.local': user
"beeper.local": user 'beeper.com': user
"beeper.com": user '@inswe:beeper.com': admin
"@inswe:beeper.com": admin relaybot:
relay: private_chat:
enabled: true invite: []
admin_only: false state_changes: true
message: This is a Matrix bridge relaybot and does not support direct chats
group_chat_invite: []
ignore_unbridged_group_chat: true
authless_portals: true
whitelist_group_admins: true
ignore_own_incoming_events: true
whitelist: []
telegram:
api_id: $API_ID
api_hash: $API_HASH
bot_token: disabled
catch_up: true
sequential_updates: true
exit_on_update_error: true
force_refresh_interval_seconds: 0
connection:
timeout: 120
retries: 5
retry_delay: 1
flood_sleep_threshold: 60
request_retries: 5
use_ipv6: false
device_info:
device_model: Beeper (self-hosted)
system_version: auto
app_version: auto
lang_code: en
system_lang_code: en
server:
enabled: false
dc: 2
ip: 149.154.167.40
port: 80
proxy:
type: disabled
logging: logging:
version: 1 version: 1
@@ -83,17 +276,8 @@ logging:
root: root:
level: INFO level: INFO
handlers: [console] handlers: [console]
telegram:
api_id: $API_ID
api_hash: $API_HASH
device_info:
device_model: "Beeper Bridge"
system_version: "Docker"
app_version: "0.1"
EOF EOF
# Docker Compose with Host Network
cat <<EOF > docker-compose.yml cat <<EOF > docker-compose.yml
services: services:
telegram: telegram:
@@ -104,6 +288,7 @@ services:
volumes: volumes:
- ./data/telegram:/data - ./data/telegram:/data
environment: environment:
# Explicitly force websocket via env var just in case
- MAUTRIX_TELEGRAM_HOMESERVER_WEBSOCKET=true - MAUTRIX_TELEGRAM_HOMESERVER_WEBSOCKET=true
logging: logging:
driver: json-file driver: json-file
@@ -112,6 +297,6 @@ services:
max-file: "3" max-file: "3"
EOF EOF
echo "Starting with Host Network..." echo "Starting FINAL ATTEMPT..."
docker compose up -d --force-recreate telegram docker compose up -d --force-recreate telegram
docker compose logs -f telegram docker compose logs -f telegram