Skip to content

Instantly share code, notes, and snippets.

@ahmed2m
Created February 19, 2025 03:14
Show Gist options
  • Save ahmed2m/be37ee1d03b79278b34711f4ea3b333c to your computer and use it in GitHub Desktop.
Save ahmed2m/be37ee1d03b79278b34711f4ea3b333c to your computer and use it in GitHub Desktop.
My self-hosted setup
version: '3.5'
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1001
- PGID=1001
- TZ=America/Edmonton
volumes:
- ./jellyconfig:/config
- /home/ubuntu/A:/data/A
- /home/ubuntu/B:/data/B
- /mnt/vol1:/data/external
- /mnt/vol2:/data/pcloud
- /home/ubuntu/downloads:/data/downloads
ports:
- 8096:8096
restart: unless-stopped
networks:
- mynetwork
filebrowser:
image: hurlenko/filebrowser
container_name: filebrowser
user: "1001:1001"
ports:
- "8090:8080"
volumes:
- /home/ubuntu:/data
- /mnt/vol1:/data/external
- /mnt/vol2:/data/pcloud
- ./filebrowser-config:/config
environment:
- FB_BASEURL=/filebrowser
restart: unless-stopped
networks:
- mynetwork
pyload-ng:
image: lscr.io/linuxserver/pyload-ng:latest
container_name: pyload-ng
environment:
- PUID=1001
- PGID=1001
- TZ=America/Edmonton
volumes:
- ./pyloadconfig:/config
- /home/ubuntu/downloads:/downloads
ports:
- "8000:8000"
- "9666:9666"
restart: unless-stopped
networks:
- mynetwork
- warp_socks
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
ports:
- 13378:80
volumes:
- /home/ubuntu/Audio/books:/audiobooks
- /home/ubuntu/Audio/podcasts:/podcasts
- ./audiobookshelf-config:/config
- ./audiobookshelf-metadata:/metadata
environment:
- TZ=America/Edmonton
restart: unless-stopped
networks:
- mynetwork
syncthing:
image: syncthing/syncthing
container_name: syncthing
hostname: my-syncthing
environment:
- PUID=1001
- PGID=1001
volumes:
- /mnt/vol1/sync:/var/syncthing
ports:
- 8384:8384 # Web UI
- 22000:22000/tcp # TCP file transfers
- 22000:22000/udp # QUIC file transfers
- 21027:21027/udp # Receive local discovery broadcasts
restart: unless-stopped
networks:
- mynetwork
actual_server:
image: docker.io/actualbudget/actual-server:latest
ports:
- '5006:5006'
# environment:
# Uncomment any of the lines below to set configuration options.
# - ACTUAL_HTTPS_KEY=/data/selfhost.key
# - ACTUAL_HTTPS_CERT=/data/selfhost.crt
# - ACTUAL_PORT=5006
# - ACTUAL_UPLOAD_FILE_SYNC_SIZE_LIMIT_MB=20
# - ACTUAL_UPLOAD_SYNC_ENCRYPTED_FILE_SYNC_SIZE_LIMIT_MB=50
# - ACTUAL_UPLOAD_FILE_SIZE_LIMIT_MB=20
# See all options and more details at https://actualbudget.github.io/docs/Installing/Configuration
# !! If you are not using any of these options, remove the 'environment:' tag entirely.
volumes:
- /mnt/vol1/actual-data:/data
networks:
- mynetwork
restart: unless-stopped
nginx:
image: steveltn/https-portal:1.22.1
container_name: nginx
depends_on:
- jellyfin
- filebrowser
- pyload-ng
- audiobookshelf
environment:
DOMAINS: >
jelly.mydomain.com -> http://jellyfin:8096,
file.mydomain.com -> http://filebrowser:8080,
pyload.mydomain.com -> http://pyload-ng:8000,
chat.mydomain.com -> http://LibreChat-API:3080/,
audio.mydomain.com -> http://audiobookshelf:80,
sync.mydomain.com -> http://syncthing:8384,
actual.mydomain.com -> http://actual_server:5006,
CLIENT_MAX_BODY_SIZE: 0
STAGE: "production"
WEBSOCKET: "true"
networks:
- librechat_default
- mynetwork
volumes:
- static_storage:/data/https-portal/vhosts/django_static/:rw
- media_storage:/data/https-portal/vhosts/django_media/:rw
- https-portal-data:/var/lib/https-portal
ports:
- "80:80"
- "443:443"
networks:
mynetwork:
external: true
librechat_default:
external: true
volumes:
static_storage: {}
media_storage: {}
https-portal-data:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment