Mastodon als lxc container in proxmox Umgebung

Da ich meine monatlichen Kosten etwas reduzieren möchte, werde ich meinen Rootserver abschaffen und stattdessen auf ein kleines Intel-NUC unter meinem Schreibtisch zurückgreifen.

Um hier möglichst viele Services laufen zu lassen, habe ich mich für proxmox als Virtualisierungsumgebung entschieden und bin absolut begeistert von den Möglichkeiten. Auf dem Proxmox-Host läuft außerdem ein Caddy-Server, um die Services auch nach außen hin erreichbar zu machen. Weil mastodon aber nicht nur web-ports (80 und 443) nach außen braucht, sondern auch noch 3000 und 4000 war das Ganze etwas komplizierter.

Caddy

Hier der entsprechende Teil meiner caddy-config:

social.muenster.im {
reverse_proxy mastodon
reverse_proxy social.muenster.im:4000 mastodon
reverse_proxy social.muenster.im:3000 mastodon
}

Mastodon

Und hier meine mastodon docker-compose.yml:

version: '3'
services:

db:
restart: always
image: postgres:9.6-alpine
shm_size: 256mb
networks:
  - internal_network
healthcheck:
  test: ["CMD", "pg_isready", "-U", "postgres"]
volumes:
  - ./postgres:/var/lib/postgresql/data
environment:
  - POSTGRES_PASSWORD=strenggeheim
  - POSTGRES_DB=mastodon_production
  - POSTGRES_USER=mastodon
  - POSTGRES_HOST_AUTH_METHOD=trust

redis:
restart: always
image: redis:6.0-alpine
networks:
  - internal_network
healthcheck:
  test: ["CMD", "redis-cli", "ping"]
volumes:
  - ./redis:/data



web:
#build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"
networks:
  - external_network
  - internal_network
healthcheck:
  test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:3000/health || exit 1"]
ports:
  - "3000:3000"
depends_on:
  - db
  - redis

volumes:
  - ./public/system:/mastodon/public/system

streaming:
#build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: node ./streaming
networks:
  - external_network
  - internal_network
healthcheck:
  test: ["CMD-SHELL", "wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1"]
ports:
  - "4000:4000"
depends_on:
  - db
  - redis

sidekiq:
#build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bundle exec sidekiq
depends_on:
  - db
  - redis
networks:
  - external_network
  - internal_network
volumes:
  - ./public/system:/mastodon/public/system

networks:
  external_network:
  internal_network:
    internal: true