97 lines
2.6 KiB
Bash
Executable File
97 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Homelab Update Script
|
|
# Updates Mastodon, Mattermost, Matrix Synapse, and system packages
|
|
|
|
echo "=== Homelab Update Script ==="
|
|
echo "Started at: $(date)"
|
|
echo ""
|
|
|
|
# Update Mastodon
|
|
echo "[1/5] Updating Mastodon..."
|
|
cd /opt/mastodon
|
|
docker compose pull
|
|
docker compose down
|
|
docker compose run --rm web bundle exec rails db:migrate
|
|
docker compose up -d
|
|
echo "✅ Mastodon updated!"
|
|
echo ""
|
|
|
|
# Update Mattermost
|
|
echo "[2/5] Updating Mattermost..."
|
|
cd /opt/mattermost
|
|
docker compose pull
|
|
docker compose down
|
|
docker compose up -d
|
|
echo "✅ Mattermost updated!"
|
|
echo ""
|
|
|
|
# Update Matrix Synapse
|
|
echo "[3/5] Updating Matrix Synapse..."
|
|
cd /opt/synapse
|
|
source venv/bin/activate
|
|
|
|
# Get current version
|
|
CURRENT_VERSION=$(python -m synapse.app.homeserver --version 2>&1 | head -1)
|
|
echo "Current version: $CURRENT_VERSION"
|
|
|
|
# Upgrade
|
|
pip install --upgrade matrix-synapse
|
|
|
|
# Get new version
|
|
NEW_VERSION=$(python -m synapse.app.homeserver --version 2>&1 | head -1)
|
|
echo "New version: $NEW_VERSION"
|
|
|
|
# Restart both Synapse instances
|
|
echo "Restarting Synapse instances..."
|
|
pkill -f 'synapse.app.homeserver' || true
|
|
sleep 2
|
|
|
|
# Start mx.vish.gg (primary)
|
|
sudo -u synapse /opt/synapse/venv/bin/python -m synapse.app.homeserver \
|
|
--config-path=/opt/synapse-mx/homeserver.yaml --daemonize
|
|
echo " - mx.vish.gg started on port 8018"
|
|
|
|
# Start legacy vish
|
|
sudo -u synapse /opt/synapse/venv/bin/python -m synapse.app.homeserver \
|
|
--config-path=/opt/synapse/homeserver.yaml --daemonize
|
|
echo " - vish (legacy) started on port 8008"
|
|
|
|
deactivate
|
|
echo "✅ Matrix Synapse updated!"
|
|
echo ""
|
|
|
|
# Update TURN server
|
|
echo "[4/5] Updating TURN server (coturn)..."
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -y coturn 2>/dev/null && echo "✅ Coturn updated!" || echo "⚠️ Coturn update skipped"
|
|
sudo systemctl restart coturn 2>/dev/null || true
|
|
echo ""
|
|
|
|
# Update system packages
|
|
echo "[5/5] Updating system packages..."
|
|
sudo apt-get update
|
|
sudo apt-get upgrade -y
|
|
sudo apt-get autoremove -y
|
|
echo "✅ System packages updated!"
|
|
echo ""
|
|
|
|
# Verification
|
|
echo "=== Verification ==="
|
|
echo ""
|
|
echo "Mastodon:"
|
|
docker compose -f /opt/mastodon/docker-compose.yml ps --format "table {{.Name}}\t{{.Status}}" 2>/dev/null | head -5
|
|
|
|
echo ""
|
|
echo "Mattermost:"
|
|
docker ps --filter "name=mattermost" --format "table {{.Names}}\t{{.Status}}"
|
|
|
|
echo ""
|
|
echo "Matrix Synapse:"
|
|
curl -s http://localhost:8018/_matrix/federation/v1/version 2>/dev/null && echo " (mx.vish.gg)" || echo "❌ mx.vish.gg not responding"
|
|
curl -s http://localhost:8008/_matrix/federation/v1/version 2>/dev/null && echo " (vish legacy)" || echo "❌ vish not responding"
|
|
|
|
echo ""
|
|
echo "=== Update Complete ==="
|
|
echo "Finished at: $(date)"
|