├── .gitignore ├── 7dtd └── docker-compose.yml ├── README.md ├── ark └── docker-compose.yml ├── assetto └── docker-compose.yml ├── bitwarden ├── bw.env.example └── docker-compose.yml ├── corekeeper └── docker-compose.yml ├── filestash └── docker-compose.yml ├── firefly ├── db.env.example ├── docker-compose.yml └── env.example ├── foldingathome └── docker-compose.yml ├── gitea └── docker-compose.yml ├── guacamole └── docker-compose.yml ├── holdfast └── docker-compose.yml ├── kimai └── docker-compose.yml ├── longvinter └── docker-compose.yml ├── matomo ├── db.env.example └── docker-compose.yml ├── media ├── README.md └── docker-compose.yml ├── minecraft └── docker-compose.yml ├── netdata └── docker-compose.yml ├── nextcloud ├── db.env.example └── docker-compose.yml ├── openvpn ├── README.md ├── docker-compose.yml └── monitor.env.example ├── organizr └── docker-compose.yml ├── photoview ├── .env.example ├── db.env.example └── docker-compose.yml ├── pihole ├── docker-compose.yml └── pihole.env.example ├── plex └── docker-compose.yml ├── portainer └── docker-compose.yml ├── pterodactyl └── docker-compose.yml ├── relay ├── docker-compose.yml └── tor.env.example ├── rtmp └── docker-compose.yml ├── seafile └── docker-compose.yml ├── soldat └── docker-compose.yml ├── statping └── docker-compose.yml ├── teamspeak └── docker-compose.yml ├── terraria └── docker-compose.yml ├── tf2 └── docker-compose.yml ├── traefik ├── docker-compose.yml ├── traefik.env.example └── traefik.toml.example ├── warrior └── docker-compose.yml └── watchtower └── docker-compose.yml /.gitignore: -------------------------------------------------------------------------------- 1 | */* 2 | !*/docker-compose.yml 3 | !*/*.example 4 | !*/*.md -------------------------------------------------------------------------------- /7dtd/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | 7dtdserver: 4 | image: vinanrra/7dtd-server 5 | container_name: 7dtd 6 | environment: 7 | - START_MODE=3 #Change between START MODES 8 | - VERSION=stable # Change between 7 days to die versions 9 | - PUID=1000 # Remember to use same as your user 10 | - PGID=1000 # Remember to use same as your user 11 | - TimeZone=America/New_York # Optional - Change Timezone 12 | - TEST_ALERT=NO # Optional - Send a test alert 13 | - UPDATE_MODS=NO # Optional - This will allow mods to be update on start, each mod also need to have XXXX_UPDATE=YES to update on start 14 | - ALLOC_FIXES=NO # Optional - Install ALLOC FIXES 15 | - ALLOC_FIXES_UPDATE # Optional - Update Allocs Fixes before server start 16 | - UNDEAD_LEGACY=NO # Optional - Install Undead Legacy mod 17 | - UNDEAD_LEGACY_VERSION=stable # Optional - Undead Legacy version 18 | - UNDEAD_LEGACY_UPDATE=NO # Optional - Update Undead Legacy mod before server start 19 | - ENZOMBIES=NO # Optional - Install EnZombies mod 20 | - ENZOMBIES_ADDON_SNUFKIN=NO # Optional - Install EnZombies addon mod 21 | - ENZOMBIES_ADDON_ROBELOTO=NO # Optional - Install EnZombies addon mod 22 | - ENZOMBIES_ADDON_NONUDES=NO # Optional - Install EnZombies addon mod 23 | - ENZOMBIES_UPDATE=NO # Optional - Update EnZombies mod and addons before server start 24 | - CPM=NO # Optional - CSMM Patron's Mod (CPM) 25 | - CPM_UPDATE=NO # Optional - Update BepInEx before server start 26 | - BEPINEX=NO # Optional - BepInEx 27 | - BEPINEX_UPDATE=NO # Optional - Update BepInEx before server start 28 | - BACKUP=NO # Optional - Backup server at 5 AM 29 | - MONITOR=NO # Optional - Keeps server up if crash 30 | volumes: 31 | - ./7DaysToDie:/home/sdtdserver/.local/share/7DaysToDie/ 32 | - ./LGSM-Config:/home/sdtdserver/lgsm/config-lgsm/sdtdserver 33 | - ./ServerFiles:/home/sdtdserver/serverfiles/ # Optional - serverfiles folder 34 | - ./log:/home/sdtdserver/log/ # Optional - Logs folder 35 | - ./backups:/home/sdtdserver/lgsm/backup/ # Optional - If BAKCUP=NO, backups folder 36 | ports: 37 | - 26900:26900/tcp # Default game ports 38 | - 26900:26900/udp # Default game ports 39 | # - 26901:26901/udp # Default game ports 40 | # - 26902:26902/udp # Default game ports 41 | # - 8083:8080/tcp # OPTIONAL - WEBADMIN 42 | # - 8081:8081/tcp # OPTIONAL - TELNET 43 | # - 8082:8082/tcp # OPTIONAL - WEBSERVER https://7dtd.illy.bz/wiki/Server%20fixes 44 | restart: unless-stopped # INFO - NEVER USE WITH START_MODE=4 or START_MODE=0 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mark's Docker Compose Files 2 | 3 | This repo is meant to be informational and used as a reference for others when creating and managing multiple docker-compose files with Traefik acting as a reverse proxy. 4 | 5 | I run my containers on an [Alpine Linux](https://alpinelinux.org/) virtual machine. 6 | 7 | ## Requirements 8 | 9 | - [Docker](https://www.docker.com/) 10 | - [docker-compose](https://docs.docker.com/compose/install/) 11 | 12 | ### Containers 13 | 14 | Container | Description | Additional 15 | ----------|----------|---------- 16 | BitWarden_rs | Password manager | [Hub](https://hub.docker.com/r/bitwardenrs/server) 17 | Firefly | Money manager | [Hub](https://hub.docker.com/r/jc5x/firefly-iii) 18 | Folding At Home | Distributed computing project | [Hub](https://hub.docker.com/r/linuxserver/foldingathome) 19 | Guacamole | Client-less remote desktop gateway | [Hub](https://hub.docker.com/r/oznu/guacamole/) 20 | Matomo | Website Analytics | [Hub](https://hub.docker.com/_/matomo) 21 | Media | Automated media - Deluge Jackett Radarr Sonarr | [ReadMe](/media/README.md) 22 | Minecraft | Minecraft Bedrock (Windows) Server | [Hub](https://hub.docker.com/r/itzg/minecraft-bedrock-server) 23 | Netdata | Performance monitoring | [Hub](https://hub.docker.com/r/netdata/netdata/) 24 | Nextcloud | A safe home for all your data | [Hub](https://hub.docker.com/_/nextcloud) 25 | OpenVPN | OpenVPN Server | **Work in progress** 26 | Organizr | Services organizer | [Hub](https://hub.docker.com/r/organizrtools/organizr-v2) 27 | Pi-hole | Network based ad blocker | [Hub](https://hub.docker.com/r/pihole/pihole) - [Website](https://pi-hole.net/) 28 | Portainer | Docker Management GUI | [Hub](https://hub.docker.com/r/portainer/portainer) 29 | Relay | Tor Relay Server | [Hub](https://hub.docker.com/r/brunneis/tor-relay-arm) 30 | RTMP | RTMP Streaming Server | [Hub](https://hub.docker.com/r/alqutami/rtmp-hls) 31 | Teamspeak | Teamspeak 3 Server | [Hub](https://hub.docker.com/_/teamspeak) 32 | Traefik | Traefik reverse proxy | [Hub](https://hub.docker.com/_/traefik) - [Docs](https://docs.traefik.io/) 33 | Warrior | Archive Team warrior | [Hub](https://hub.docker.com/r/archiveteam/warrior-dockerfile/) 34 | Watchtower | Container auto-updates | [Hub](https://hub.docker.com/r/v2tec/watchtower) 35 | 36 | #### Environment Files 37 | 38 | To keep secrets safe I use .env files in my docker-compose.yml for secrets and passwords.\ 39 | Each should be provided with a .env.example file for example usage 40 | 41 | #### Volumes 42 | 43 | I mount NFS Shared from my FreeNAS Server for external storage to the containers (media, nextcloud, warrior) 44 | 45 | #### Installation / Usage 46 | 47 | git clone https://github.com/bearlikelion/docker-compose.git 48 | cd // 49 | docker-compose up -d 50 | 51 | ##### Contributing 52 | 53 | Feel free to fork and submit pull requests to this repo 54 | -------------------------------------------------------------------------------- /ark/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | server: 4 | restart: always 5 | container_name: ark_server 6 | image: hermsi/ark-server:latest 7 | volumes: 8 | - ./ark-server:/app 9 | - ./ark-server-backups:/home/steam/ARK-Backups 10 | environment: 11 | - SESSION_NAME=Friendos and Dinos 12 | - SERVER_MAP=Fjordur 13 | - SERVER_PASSWORD= 14 | - SERVER_LIST_PORT=27017 15 | - GAME_CLIENT_PORT=7778 16 | - ADMIN_PASSWORD=m4rkMaN 17 | - MAX_PLAYERS=69 18 | - UPDATE_ON_START=true 19 | # - BACKUP_ON_STOP=${BACKUP_ON_STOP} 20 | # - PRE_UPDATE_BACKUP=${PRE_UPDATE_BACKUP} 21 | - WARN_ON_STOP=true 22 | - GAME_MOD_IDS=849372965,1999447172,1404697612,1428596566 23 | ports: 24 | # Port for connections from ARK game client 25 | - "7787:7778/udp" 26 | # Raw UDP socket port (always Game client port +1) 27 | - "7779:7779/udp" 28 | # RCON management port 29 | - "27020:27020/tcp" 30 | # Steam's server-list port 31 | - "27017:27017/udp" 32 | networks: 33 | - default -------------------------------------------------------------------------------- /assetto/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | assetto-server-manager: 4 | image: seejy/assetto-server-manager:latest 5 | container_name: assetto 6 | restart: unless-stopped 7 | environment: 8 | - PUID=1000 9 | - PGID=1000 10 | ports: 11 | # the port that the server manager runs on 12 | - "8772:8772" 13 | # the port that the assetto server runs on (may vary depending on your configuration inside server manager) 14 | - "9600:9600" 15 | - "9600:9600/udp" 16 | # the port that the assetto server HTTP API runs on. 17 | - "8081:8081" 18 | # you may also wish to bind your configured UDP plugin ports here. 19 | - "50042:50042" 20 | volumes: 21 | # volume mount the entire server install so that 22 | # content etc persists across restarts 23 | - ./server-manager:/home/assetto/server-manager/assetto 24 | - ./assetto:/assetto/ 25 | 26 | # volume mount the config 27 | - ./config.yml:/home/assetto/server-manager/config.yml -------------------------------------------------------------------------------- /bitwarden/bw.env.example: -------------------------------------------------------------------------------- 1 | ADMIN_TOKEN=GENERATEADMINTOKENHERE 2 | -------------------------------------------------------------------------------- /bitwarden/docker-compose.yml: -------------------------------------------------------------------------------- 1 | #docker-compose.yml 2 | 3 | version: "3" 4 | 5 | services: 6 | bitwarden: 7 | container_name: bitwarden 8 | image: bitwardenrs/server 9 | volumes: 10 | - ./bw-data:/data 11 | - ./ssl:/ssl 12 | ports: 13 | - 8443:80 14 | labels: 15 | - traefik.enable=true 16 | - traefik.web.frontend.rule=Host:vault.arneman.me 17 | - traefik.web.port=80 18 | - traefik.hub.frontend.rule=Host:vault.arneman.me;Path:/notifications/hub 19 | - traefik.hub.port=3012 20 | - traefik.hub.protocol=ws 21 | - traefik.frontend.entryPoints=redirecthttps,https 22 | environment: 23 | WEBSOCKET_ENABLED: 'true' 24 | ROCKET_TLS: '{certs = "/ssl/vault.crt", key = "/ssl/vault.key"}' 25 | SIGNUPS_ALLOWED: 'false' 26 | networks: 27 | - traefik 28 | env_file: 29 | - bw.env 30 | restart: unless-stopped 31 | 32 | networks: 33 | traefik: 34 | external: true -------------------------------------------------------------------------------- /corekeeper/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | core-keeper-server: 4 | volumes: 5 | - './server-data:/data' 6 | restart: unless-stopped 7 | image: 'tedtramonte/core-keeper-server:latest' 8 | container_name: corekeeper 9 | environment: 10 | - WORLD_NAME=Hello Friendo 11 | - WORLD_SEED=69420lol 12 | - MAX_PLAYERS=69 -------------------------------------------------------------------------------- /filestash/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | app: 4 | container_name: filestash 5 | image: machines/filestash 6 | restart: always 7 | volumes: 8 | - /mnt/sauron:/storage 9 | # environment: 10 | # - APPLICATION_URL= 11 | # - GDRIVE_CLIENT_ID= 12 | # - GDRIVE_CLIENT_SECRET= 13 | # - DROPBOX_CLIENT_ID= 14 | # - ONLYOFFICE_URL=http://onlyoffice 15 | ports: 16 | - "8334:8334" 17 | 18 | # onlyoffice: 19 | # container_name: filestash_oods 20 | # image: onlyoffice/documentserver 21 | # restart: always 22 | # security_opt: 23 | # - seccomp:unconfined 24 | 25 | -------------------------------------------------------------------------------- /firefly/db.env.example: -------------------------------------------------------------------------------- 1 | MYSQL_ROOT_PASSWORD=ROOTMYSQLPASSWORD 2 | MYSQL_PASSWORD=GENERATEDPASSWORD 3 | MYSQL_DATABASE=firefly 4 | MYSQL_USER=firefly -------------------------------------------------------------------------------- /firefly/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | 3 | services: 4 | firefly_iii: 5 | image: jc5x/firefly-iii:latest 6 | volumes: 7 | - firefly_iii_export:/var/www/firefly-iii/storage/export 8 | - firefly_iii_upload:/var/www/firefly-iii/storage/upload 9 | env_file: .env 10 | networks: 11 | - traefik 12 | labels: 13 | - traefik.enable=true 14 | - traefik.frontend.rule=Host:firefly.arneman.me,firefly.arneman.home,firefly 15 | - traefik.frontend.entryPoints=http,https 16 | depends_on: 17 | - firefly_iii_db 18 | 19 | firefly_iii_db: 20 | image: postgres:10-alpine 21 | env_file: 22 | - db.env 23 | volumes: 24 | - firefly_iii_db:/var/lib/postgresql/data 25 | 26 | volumes: 27 | firefly_iii_export: 28 | firefly_iii_upload: 29 | firefly_iii_db: 30 | 31 | networks: 32 | traefik: 33 | external: true 34 | 35 | -------------------------------------------------------------------------------- /firefly/env.example: -------------------------------------------------------------------------------- 1 | # You can leave this on "local". If you change it to production most console commands will ask for extra confirmation. 2 | # Never set it to "testing". 3 | APP_ENV=local 4 | 5 | # Set to true if you want to see debug information in error screens. 6 | APP_DEBUG=false 7 | 8 | # This should be your email address. 9 | # If you use Docker or similar, you can set this variable from a file by using SITE_OWNER_FILE 10 | SITE_OWNER=mail@example.com 11 | 12 | # The encryption key for your sessions. Keep this very secure. 13 | # If you generate a new one existing data must be considered LOST. 14 | # Change it to a string of exactly 32 chars or use something like `php artisan key:generate` to generate it. 15 | # If you use Docker or similar, you can set this variable from a file by using APP_KEY_FILE 16 | APP_KEY=SomeRandomStringOf32CharsExactly 17 | 18 | # 19 | # Firefly III will launch using this language (for new users and unauthenticated visitors) 20 | # For a list of available languages: https://github.com/firefly-iii/firefly-iii/tree/master/resources/lang 21 | # 22 | # If text is still in English, remember that not everything may have been translated. 23 | DEFAULT_LANGUAGE=en_US 24 | 25 | # Change this value to your preferred time zone. 26 | # Example: Europe/Amsterdam 27 | # For a list of supported time zones, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones 28 | TZ=Europe/Amsterdam 29 | 30 | # This variable must match your installation's external address but keep in mind that 31 | # it's only used on the command line as a fallback value. 32 | APP_URL=http://localhost 33 | 34 | # TRUSTED_PROXIES is a useful variable when using Docker and/or a reverse proxy. 35 | # Set it to ** and reverse proxies work just fine. 36 | TRUSTED_PROXIES= 37 | 38 | # The log channel defines where your log entries go to. 39 | # Several other options exist. You can use 'single' for one big fat error log (not recommended). 40 | # Also available are 'syslog', 'errorlog' and 'stdout' which will log to the system itself. 41 | # A rotating log option is 'daily', creates 5 files that (surprise) rotate. 42 | # Default setting 'stack' will log to 'daily' and to 'stdout' at the same time. 43 | 44 | # - Docker + versions <= 4.8.1.8 and before: use "stdout" 45 | # - Docker + versions > 4.8.1.8 : use "docker_out" 46 | # - Docker + versions >= 5.1.1 : use "stack" 47 | # - For everything else (als not Docker) : use 'stack' 48 | 49 | LOG_CHANNEL=stack 50 | 51 | # Log level. You can set this from least severe to most severe: 52 | # debug, info, notice, warning, error, critical, alert, emergency 53 | # If you set it to debug your logs will grow large, and fast. If you set it to emergency probably 54 | # nothing will get logged, ever. 55 | APP_LOG_LEVEL=notice 56 | 57 | # Database credentials. Make sure the database exists. I recommend a dedicated user for Firefly III 58 | # For other database types, please see the FAQ: https://docs.firefly-iii.org/support/faq 59 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 60 | # Use "mysql" for MySQL and MariaDB. Use "sqlite" for SQLite. 61 | DB_CONNECTION=pgsql 62 | DB_HOST=firefly_iii_db 63 | DB_PORT=5432 64 | DB_DATABASE=firefly 65 | DB_USERNAME=firefly 66 | DB_PASSWORD=secret_firefly_password 67 | 68 | # PostgreSQL supports SSL. You can configure it here. 69 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 70 | PGSQL_SSL_MODE=prefer 71 | PGSQL_SSL_ROOT_CERT=null 72 | PGSQL_SSL_CERT=null 73 | PGSQL_SSL_KEY=null 74 | PGSQL_SSL_CRL_FILE=null 75 | 76 | # If you're looking for performance improvements, you could install memcached. 77 | CACHE_DRIVER=file 78 | SESSION_DRIVER=file 79 | 80 | # If you set either of these to 'redis', you might want to update these settings too 81 | # If you use Docker or similar, you can set REDIS_HOST_FILE, REDIS_PASSWORD_FILE or 82 | # REDIS_PORT_FILE to set the value from a file instead of from an environment variable 83 | REDIS_HOST=127.0.0.1 84 | REDIS_PASSWORD=null 85 | REDIS_PORT=6379 86 | # always use quotes and make sure redis db "0" and "1" exists. Otherwise change accordingly. 87 | REDIS_DB="0" 88 | REDIS_CACHE_DB="1" 89 | 90 | # Cookie settings. Should not be necessary to change these. 91 | # If you use Docker or similar, you can set COOKIE_DOMAIN_FILE to set 92 | # the value from a file instead of from an environment variable 93 | COOKIE_PATH="/" 94 | COOKIE_DOMAIN= 95 | COOKIE_SECURE=false 96 | 97 | # If you want Firefly III to mail you, update these settings 98 | # For instructions, see: https://docs.firefly-iii.org/advanced-installation/email 99 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 100 | MAIL_DRIVER=log 101 | MAIL_HOST=smtp.mailtrap.io 102 | MAIL_PORT=2525 103 | MAIL_FROM=changeme@example.com 104 | MAIL_USERNAME=null 105 | MAIL_PASSWORD=null 106 | MAIL_ENCRYPTION=null 107 | 108 | # Other mail drivers: 109 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 110 | MAILGUN_DOMAIN= 111 | MAILGUN_SECRET= 112 | 113 | 114 | # If you are on EU region in mailgun, use api.eu.mailgun.net, otherwise use api.mailgun.net 115 | # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 116 | MAILGUN_ENDPOINT=api.mailgun.net 117 | 118 | # If you use Docker or similar, you can set these variables from a file by appending them with _FILE 119 | MANDRILL_SECRET= 120 | SPARKPOST_SECRET= 121 | 122 | 123 | # Firefly III can send you the following messages 124 | SEND_REGISTRATION_MAIL=true 125 | SEND_ERROR_MESSAGE=true 126 | 127 | # These messages contain (sensitive) transaction information: 128 | SEND_REPORT_JOURNALS=true 129 | 130 | # Set a Mapbox API key here (see mapbox.com) so there might be a map available at various places. 131 | # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 132 | MAPBOX_API_KEY= 133 | 134 | # The map will default to this location: 135 | MAP_DEFAULT_LAT=51.983333 136 | MAP_DEFAULT_LONG=5.916667 137 | MAP_DEFAULT_ZOOM=6 138 | 139 | # Firefly III currently supports two provider for live Currency Exchange Rates: 140 | # "fixer", and "ratesapi". 141 | # RatesApi.IO (see https://ratesapi.io) is a FREE and OPEN SOURCE live currency exchange rates, 142 | # built compatible with Fixer.IO, based on data published by European Central Bank, and doesn't require API key. 143 | CER_PROVIDER=ratesapi 144 | 145 | # If you have select "fixer" as default currency exchange rates, 146 | # set a Fixer IO API key here (see https://fixer.io) to enable live currency exchange rates. 147 | # Please note that this WILL ONLY WORK FOR PAID fixer.io accounts because they severely limited 148 | # the free API up to the point where you might as well offer nothing. 149 | # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 150 | FIXER_API_KEY= 151 | 152 | # Firefly III has two options for user authentication. "eloquent" is the default, 153 | # and "ldap" for LDAP servers. 154 | # For full instructions on these settings please visit: 155 | # https://docs.firefly-iii.org/advanced-installation/authentication 156 | # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 157 | LOGIN_PROVIDER=eloquent 158 | 159 | # LDAP connection configuration 160 | # OpenLDAP, FreeIPA or ActiveDirectory 161 | # # If you use Docker or similar, you can set this variable from a file by appending it with _FILE 162 | ADLDAP_CONNECTION_SCHEME=OpenLDAP 163 | ADLDAP_AUTO_CONNECT=true 164 | 165 | # LDAP connection settings 166 | # You can set the following variables from a file by appending them with _FILE: 167 | # ADLDAP_CONTROLLERS, ADLDAP_PORT, ADLDAP_BASEDN 168 | ADLDAP_CONTROLLERS= 169 | ADLDAP_PORT=389 170 | ADLDAP_TIMEOUT=5 171 | ADLDAP_BASEDN="" 172 | ADLDAP_FOLLOW_REFFERALS=false 173 | ADLDAP_USE_SSL=false 174 | ADLDAP_USE_TLS=false 175 | 176 | # You can set the following variables from a file by appending them with _FILE: 177 | ADLDAP_ADMIN_USERNAME= 178 | ADLDAP_ADMIN_PASSWORD= 179 | 180 | # You can set the following variables from a file by appending them with _FILE: 181 | ADLDAP_ACCOUNT_PREFIX= 182 | ADLDAP_ACCOUNT_SUFFIX= 183 | 184 | 185 | # LDAP authentication settings. 186 | ADLDAP_PASSWORD_SYNC=false 187 | ADLDAP_LOGIN_FALLBACK=false 188 | 189 | ADLDAP_DISCOVER_FIELD=distinguishedname 190 | ADLDAP_AUTH_FIELD=distinguishedname 191 | 192 | # Will allow SSO if your server provides an AUTH_USER field. 193 | # You can set the following variables from a file by appending them with _FILE: 194 | WINDOWS_SSO_DISCOVER=samaccountname 195 | WINDOWS_SSO_KEY=AUTH_USER 196 | 197 | # field to sync as local username. 198 | # You can set the following variable from a file by appending it with _FILE: 199 | ADLDAP_SYNC_FIELD=userprincipalname 200 | 201 | # You can disable the X-Frame-Options header if it interferes with tools like 202 | # Organizr. This is at your own risk. Applications running in frames run the risk 203 | # of leaking information to their parent frame. 204 | DISABLE_FRAME_HEADER=false 205 | 206 | # You can disable the Content Security Policy header when you're using an ancient browser 207 | # or any version of Microsoft Edge / Internet Explorer (which amounts to the same thing really) 208 | # This leaves you with the risk of not being able to stop XSS bugs should they ever surface. 209 | # This is at your own risk. 210 | DISABLE_CSP_HEADER=false 211 | 212 | # If you wish to track your own behavior over Firefly III, set valid analytics tracker information here. 213 | # Nobody uses this except for me on the demo site. But hey, feel free to use this if you want to. 214 | # Do not prepend the TRACKER_URL with http:// or https:// 215 | # The only tracker supported is Matomo. 216 | # You can set the following variables from a file by appending them with _FILE: 217 | TRACKER_SITE_ID= 218 | TRACKER_URL= 219 | 220 | # 221 | # Firefly III could (in the future) collect telemetry on how you use Firefly III. 222 | # In order to allow this, change the following variable to true: 223 | SEND_TELEMETRY=false 224 | 225 | # You can fine tune the start-up of a Docker container by editing these environment variables. 226 | # Use this at your own risk. Disabling certain checks and features may result in lost of inconsistent data. 227 | # However if you know what you're doing you can significantly speed up container start times. 228 | # Set each value to true to enable, or false to disable. 229 | 230 | # Check if the SQLite database exists. Can be skipped if you're not using SQLite. 231 | # Won't significantly speed up things. 232 | DKR_CHECK_SQLITE=true 233 | 234 | # Run database creation and migration commands. Disable this only if you're 100% sure the DB exists 235 | # and is up to date. 236 | DKR_RUN_MIGRATION=true 237 | 238 | # Run database upgrade commands. Disable this only when you're 100% sure your DB is up-to-date 239 | # with the latest fixes (outside of migrations!) 240 | DKR_RUN_UPGRADE=true 241 | 242 | # Verify database integrity. Includes all data checks and verifications. 243 | # Disabling this makes Firefly III assume your DB is intact. 244 | DKR_RUN_VERIFY=true 245 | 246 | # Run database reporting commands. When disabled, Firefly III won't go over your data to report current state. 247 | # Disabling this should have no impact on data integrity or safety but it won't warn you of possible issues. 248 | DKR_RUN_REPORT=true 249 | 250 | # Generate OAuth2 keys. 251 | # When disabled, Firefly III won't attempt to generate OAuth2 Passport keys. This won't be an issue, IFF (if and only if) 252 | # you had previously generated keys already and they're stored in your database for restoration. 253 | DKR_RUN_PASSPORT_INSTALL=true 254 | 255 | # Leave the following configuration vars as is. 256 | # Unless you like to tinker and know what you're doing. 257 | APP_NAME=FireflyIII 258 | ADLDAP_CONNECTION=default 259 | BROADCAST_DRIVER=log 260 | QUEUE_DRIVER=sync 261 | CACHE_PREFIX=firefly 262 | SEARCH_RESULT_LIMIT=50 263 | PUSHER_KEY= 264 | PUSHER_SECRET= 265 | PUSHER_ID= 266 | DEMO_USERNAME= 267 | DEMO_PASSWORD= 268 | USE_ENCRYPTION=false 269 | IS_SANDSTORM=false 270 | IS_DOCKER=false 271 | IS_HEROKU=false 272 | BUNQ_USE_SANDBOX=false 273 | -------------------------------------------------------------------------------- /foldingathome/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | foldingathome: 4 | image: linuxserver/foldingathome 5 | container_name: foldingathome 6 | environment: 7 | - PUID=1000 8 | - PGID=1000 9 | - TZ=America/New-York 10 | volumes: 11 | - ./config:/config 12 | ports: 13 | - 7396:7396 14 | - 36330:36330 #optional 15 | restart: unless-stopped -------------------------------------------------------------------------------- /gitea/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | gitea: 4 | container_name: gitea 5 | image: gitea/gitea:latest 6 | volumes: 7 | - ./data:/data 8 | ports: 9 | - "3000:3000" 10 | - "2222:22" 11 | environment: 12 | - PUID=1001 13 | - PGID=1001 14 | restart: always -------------------------------------------------------------------------------- /guacamole/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | guacamole: 4 | container_name: guacamole 5 | ports: 6 | - '8087:8080' 7 | volumes: 8 | - ./config:/config 9 | image: oznu/guacamole -------------------------------------------------------------------------------- /holdfast/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | holdfastnaw: 4 | container_name: holdfast 5 | image: cm2network/holdfastnaw 6 | network_mode: host 7 | environment: 8 | FPSMAX: 60 9 | SERVER_REGION: 'us' 10 | SERVER_CONFIG_PATH: "serverconfig_sg.txt" 11 | volumes: 12 | - './data:/home/steam/holdfastnaw-dedicated/' 13 | -------------------------------------------------------------------------------- /kimai/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | kimai2: 4 | ports: 5 | - '8001:8001' 6 | container_name: kimai 7 | image: 'kimai/kimai2:latest-dev' 8 | environment: 9 | - APP_ENV=prod 10 | - TRUSTED_HOSTS=localhost,alpine,time,time.arneman.home 11 | volumes: 12 | - public:/opt/kimai/public 13 | - var:/opt/kimai/var 14 | labels: 15 | - traefik.enable=true 16 | - traefik.frontend.rule=Host:time.arneman.home,time 17 | - traefik.frontend.entryPoints=http 18 | - traefik.port=8001 19 | networks: 20 | - traefik 21 | 22 | networks: 23 | traefik: 24 | external: true 25 | 26 | volumes: 27 | var: 28 | public: -------------------------------------------------------------------------------- /longvinter/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | longvinter: 4 | container_name: longvinter 5 | image: zskullz/longvinter-server 6 | volumes: 7 | - './config:/home/steam/longvinter-linux-server/Longvinter/Saved/Config/LinuxServer' 8 | - './saves:/home/steam/longvinter-linux-server/Longvinter/Saved/SaveGames' 9 | ports: 10 | - '7777:7777/udp' 11 | - '7777:7777/tcp' 12 | - '27015:27015/udp' 13 | - '27016:27016/udp' 14 | - '27015:27015/tcp' 15 | - '27016:27016/tcp' 16 | restart: unless-stopped -------------------------------------------------------------------------------- /matomo/db.env.example: -------------------------------------------------------------------------------- 1 | MYSQL_ROOT_PASSWORD=ROOTPASSWORDHERE 2 | MYSQL_DATABASE=matomo 3 | MYSQL_USER=root 4 | -------------------------------------------------------------------------------- /matomo/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | db: 5 | image: mariadb 6 | container_name: matomo_db 7 | command: --max-allowed-packet=64MB 8 | networks: 9 | - matomo 10 | volumes: 11 | - db:/var/lib/mysql 12 | env_file: 13 | - ./db.env 14 | restart: unless-stopped 15 | 16 | app: 17 | image: matomo:fpm-alpine 18 | container_name: matomo 19 | links: 20 | - db 21 | networks: 22 | - matomo 23 | volumes: 24 | - ./config:/var/www/html/config:rw 25 | - ./logs:/var/www/html/logs 26 | - matomo:/var/www/html 27 | environment: 28 | - MATOMO_DATABASE_HOST=db 29 | env_file: 30 | - ./db.env 31 | restart: unless-stopped 32 | 33 | web: 34 | image: nginx:alpine 35 | container_name: matomo_web 36 | restart: unless-stopped 37 | networks: 38 | - matomo 39 | - traefik 40 | volumes: 41 | - matomo:/var/www/html:ro 42 | # see https://github.com/matomo-org/matomo-nginx 43 | - ./matomo.conf:/etc/nginx/conf.d/default.conf:ro 44 | labels: 45 | - traefik.enable=true 46 | - traefik.frontend.rule=Host:stats.arneman.me,stats.arneman.home,stats 47 | - traefik.frontend.entryPoints=http,https 48 | ports: 49 | - 8082:80 50 | 51 | volumes: 52 | db: 53 | matomo: 54 | 55 | networks: 56 | traefik: 57 | external: true 58 | matomo: -------------------------------------------------------------------------------- /media/README.md: -------------------------------------------------------------------------------- 1 | # Mark's Media Server 2 | 3 | Mark's docker-compose file for his automated media server. Containers provided by [linuxserver.io](https://linuxserver.io) 4 | 5 | ## Containers 6 | 7 | Container | Description | Additional 8 | ----------|----------|---------- 9 | Deluge | Torrent Client | [Hub](https://hub.docker.com/r/linuxserver/deluge) 10 | Jackett | Torrent Indexer | [Hub](https://hub.docker.com/r/linuxserver/jackett) 11 | Radarr | Movie Downloader | [Hub](https://hub.docker.com/r/linuxserver/radarr) 12 | Sonarr | Television Downloader | [Hub](https://hub.docker.com/r/linuxserver/sonarr) 13 | Tautulli | Plex Analytics and Statistics | [Hub](https://hub.docker.com/r/linuxserver/tautulli) 14 | 15 | ### Volumes 16 | 17 | I mount a NFS Media Share to the containers in the docker-compose file 18 | 19 | volumes: 20 | mediamount: 21 | driver: local 22 | driver_opts: 23 | type: nfs 24 | o: addr=freenas.arneman.home,nolock,soft,rw 25 | device: ":/mnt/FreeNAS-Vol/Media" 26 | -------------------------------------------------------------------------------- /media/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | # Deluge - torrent downloader 4 | deluge: 5 | image: linuxserver/deluge:latest 6 | container_name: deluge 7 | # network_mode: "host" 8 | environment: 9 | - PUID=0 10 | - PGID=0 11 | - UMASK_SET=022 12 | - TZ=America/New_York 13 | labels: 14 | - traefik.enable=true 15 | - traefik.frontend.rule=Host:deluge.arneman.home,deluge,downloads,downloads.arneman.home 16 | - traefik.frontend.entryPoints=http 17 | - traefik.port=8112 18 | networks: 19 | - traefik 20 | ports: 21 | - 8112:8112 22 | - 45000:45000 23 | - 58846:58846 24 | volumes: 25 | - ./deluge/config:/config 26 | - "mediamount:/media" 27 | restart: unless-stopped 28 | 29 | # Radarr - Movie indexer 30 | radarr: 31 | image: linuxserver/radarr:nightly 32 | container_name: radarr 33 | environment: 34 | - PUID=0 35 | - PGID=0 36 | - UMASK_SET=022 37 | - TZ=America/New_York 38 | ports: 39 | - 7878:7878 40 | labels: 41 | - traefik.enable=true 42 | - traefik.frontend.rule=Host:radarr.arneman.home,radarr,movies,movies.arneman.home 43 | - traefik.frontend.entryPoints=http 44 | - traefik.port=7878 45 | networks: 46 | - traefik 47 | volumes: 48 | - ./radarr:/config 49 | - "mediamount:/media" 50 | restart: unless-stopped 51 | 52 | # Sonarr - Television indexer 53 | sonarr: 54 | image: linuxserver/sonarr 55 | container_name: sonarr 56 | environment: 57 | - PUID=0 58 | - PGID=0 59 | - UMASK_SET=022 60 | - TZ=America/New_York 61 | ports: 62 | - 8989:8989 63 | labels: 64 | - traefik.enable=true 65 | - traefik.frontend.rule=Host:sonarr.arneman.home,sonarr,tv,tv.arneman.home 66 | - traefik.frontend.entryPoints=http 67 | - traefik.port=8989 68 | networks: 69 | - traefik 70 | volumes: 71 | - ./sonarr:/config 72 | - "mediamount:/media" 73 | restart: unless-stopped 74 | 75 | # Jackett - torrent indexer for Radarr/Sonarr 76 | jackett: 77 | image: linuxserver/jackett 78 | container_name: jackett 79 | ports: 80 | - 9117:9117 81 | environment: 82 | - UMASK_SET=022 83 | - TZ=America/New_York 84 | labels: 85 | - traefik.enable=true 86 | - traefik.frontend.rule=Host:jackett.arneman.home,jackett 87 | - traefik.frontend.entryPoints=http 88 | - traefik.port=9117 89 | networks: 90 | - traefik 91 | volumes: 92 | - ./jackett:/config 93 | restart: unless-stopped 94 | 95 | # Tautulli - Plex Stats (formally PlexPy) 96 | tautulli: 97 | image: tautulli/tautulli 98 | container_name: tautulli 99 | ports: 100 | - 8181:8181 101 | environment: 102 | - UMASK_SET=022 103 | - TZ=America/New_York 104 | labels: 105 | - traefik.enable=true 106 | - traefik.frontend.rule=Host:plexpy.arneman.home,plexpy 107 | - traefik.frontend.entryPoints=http 108 | - traefik.port=8181 109 | networks: 110 | - traefik 111 | volumes: 112 | - ./tautulli:/config 113 | restart: unless-stopped 114 | 115 | # dizquetv: 116 | # container_name: dizquetv 117 | # ports: 118 | # - '8000:8000' 119 | # volumes: 120 | # - './dizquetv:/home/node/app/.dizquetv' 121 | # image: 'vexorian/dizquetv:latest' 122 | 123 | # jellyfin: 124 | # container_name: jellyfin 125 | # image: jellyfin/jellyfin 126 | # network_mode: "host" 127 | # restart: "unless-stopped" 128 | # volumes: 129 | # - ./jellyfin/config:/config 130 | # - ./jellyfin/cache:/cache 131 | # - /mnt/sauron/Media:/media 132 | 133 | # jfa-go: 134 | # container_name: jfa-go 135 | # ports: 136 | # - '8056:8056' 137 | # volumes: 138 | # - './jfa-go:/data' 139 | # - './jellyfin:/jf' 140 | # - '/etc/localtime:/etc/localtime:ro' 141 | # image: hrfee/jfa-go 142 | 143 | 144 | volumes: 145 | mediamount: 146 | driver: local 147 | driver_opts: 148 | type: nfs 149 | o: addr=192.168.1.43,nolock,soft,rw 150 | device: ":/Media" 151 | 152 | networks: 153 | traefik: 154 | external: true 155 | -------------------------------------------------------------------------------- /minecraft/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | bds: 5 | container_name: minecraft 6 | image: itzg/minecraft-bedrock-server 7 | environment: 8 | EULA: "TRUE" 9 | GAMEMODE: survival 10 | DIFFICULTY: normal 11 | MAX_PLAYESRS: "30" 12 | ports: 13 | - 19132:19132/udp 14 | volumes: 15 | - ./data:/data 16 | 17 | -------------------------------------------------------------------------------- /netdata/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | netdata: 4 | image: netdata/netdata 5 | container_name: netdata 6 | hostname: alpine.arneman.home # set to fqdn of host 7 | ports: 8 | - 19999:19999 9 | networks: 10 | - traefik 11 | labels: 12 | - traefik.enable=true 13 | - traefik.frontend.rule=Host:netdata.arneman.home,netdata 14 | - traefik.frontend.entryPoints=http 15 | - traefik.port=19999 16 | cap_add: 17 | - SYS_PTRACE 18 | security_opt: 19 | - apparmor:unconfined 20 | volumes: 21 | - /proc:/host/proc:ro 22 | - /sys:/host/sys:ro 23 | - /var/run/docker.sock:/var/run/docker.sock:ro 24 | restart: unless-stopped 25 | 26 | networks: 27 | traefik: 28 | external: true -------------------------------------------------------------------------------- /nextcloud/db.env.example: -------------------------------------------------------------------------------- 1 | MYSQL_ROOT_PASSWORD=ROOTMYSQLPASSWORD 2 | MYSQL_PASSWORD=GENERATEDPASSWORD 3 | MYSQL_DATABASE=nextcloud 4 | MYSQL_USER=nextcloud -------------------------------------------------------------------------------- /nextcloud/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | nextcloud: 4 | image: linuxserver/nextcloud:latest 5 | container_name: nextcloud 6 | environment: 7 | - TZ=America/New_York 8 | volumes: 9 | - ./appdata:/config 10 | - ./data:/data 11 | - storagemount:/storage 12 | - mediamount:/media 13 | networks: 14 | - traefik 15 | - internal 16 | labels: 17 | - traefik.enable=true 18 | - traefik.frontend.rule=Host:cloud.arneman.me,cloud.arneman.home,cloud 19 | - traefik.frontend.entryPoints=http,https 20 | ports: 21 | - 8443:443 22 | restart: unless-stopped 23 | 24 | volumes: 25 | db: 26 | nextcloud: 27 | storagemount: 28 | driver: local 29 | driver_opts: 30 | type: nfs 31 | o: addr=10.0.0.241,nolock,soft,rw 32 | device: ":/Storage" 33 | mediamount: 34 | driver: local 35 | driver_opts: 36 | type: nfs 37 | o: addr=10.0.0.241,nolock,soft,rw 38 | device: ":/Media" 39 | 40 | networks: 41 | internal: 42 | traefik: 43 | external: true 44 | -------------------------------------------------------------------------------- /openvpn/README.md: -------------------------------------------------------------------------------- 1 | # How To 2 | 3 | * Generate a client certificate 4 | 5 | ```bash 6 | export CLIENTNAME="your_client_name" 7 | # with a passphrase (recommended) 8 | docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME 9 | # without a passphrase (not recommended) 10 | docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass 11 | ``` 12 | 13 | * Retrieve the client configuration with embedded certificates 14 | 15 | ```bash 16 | docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn 17 | ``` 18 | 19 | * Revoke a client certificate 20 | 21 | ```bash 22 | # Keep the corresponding crt, key and req files. 23 | docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME 24 | # Remove the corresponding crt, key and req files. 25 | docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME remove 26 | ``` -------------------------------------------------------------------------------- /openvpn/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | openvpn: 4 | network_mode: "host" 5 | cap_add: 6 | - NET_ADMIN 7 | image: kylemanna/openvpn 8 | container_name: openvpn 9 | ports: 10 | - "8080:8080/udp" 11 | - "5555:5555" 12 | # networks: 13 | # vpn: 14 | # ipv4_address: 172.23.0.2 15 | volumes: 16 | - ./conf:/etc/openvpn 17 | restart: unless-stopped 18 | 19 | openvpn-monitor: 20 | container_name: openvpn-monitor 21 | image: mumblepins/openvpn-monitor 22 | labels: 23 | - traefik.enable=true 24 | - traefik.frontend.rule=Host:vpnstatus,vpnstatus.arneman.home 25 | - traefik.frontend.entryPoints=http 26 | networks: 27 | traefik: 28 | # vpn: 29 | # ipv4_address: 172.23.0.3 30 | env_file: 31 | monitor.env 32 | restart: unless-stopped 33 | 34 | networks: 35 | # vpn: 36 | # ipam: 37 | # config: 38 | # - subnet: 172.23.0.0/16 39 | traefik: 40 | external: true 41 | -------------------------------------------------------------------------------- /openvpn/monitor.env.example: -------------------------------------------------------------------------------- 1 | OPENVPNMONITOR_DEFAULT_SITE=VPN 2 | OPENVPNMONITOR_DEFAULT_LATITUDE=40 3 | OPENVPNMONITOR_DEFAULT_LONGITUDE=-74 4 | OPENVPNMONITOR_DEFAULT_MAPS=True 5 | OPENVPNMONITOR_SITES_0_HOST=openvpn 6 | OPENVPNMONITOR_SITES_0_NAME=VPN 7 | OPENVPNMONITOR_SITES_0_PORT=5555 8 | -------------------------------------------------------------------------------- /organizr/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | organizr: 4 | image: organizrtools/organizr-v2 5 | container_name: organizr 6 | volumes: 7 | - ./config:/config 8 | # ports: 9 | # - "80:80" 10 | labels: 11 | - traefik.enable=true 12 | - traefik.frontend.rule=Host:dash.arneman.home,dash 13 | - traefik.frontend.entryPoints=http 14 | networks: 15 | - traefik 16 | restart: unless-stopped 17 | 18 | networks: 19 | traefik: 20 | external: true -------------------------------------------------------------------------------- /photoview/.env.example: -------------------------------------------------------------------------------- 1 | PHOTOVIEW_DATABASE_DRIVER=mysql 2 | PHOTOVIEW_MYSQL_URL=photoview:photos@tcp(db)/photoview 3 | PHOTOVIEW_LISTEN_IP=photoview 4 | PHOTOVIEW_LISTEN_PORT=80 5 | PHOTOVIEW_MEDIA_CACHE=/app/cache 6 | 7 | # Optional: To enable map related features, you need to create a mapbox token. 8 | # A token can be generated for free here https://account.mapbox.com/access-tokens/ 9 | # It's a good idea to limit the scope of the token to your own domain, to prevent others from using it. 10 | # - MAPBOX_TOKEN= -------------------------------------------------------------------------------- /photoview/db.env.example: -------------------------------------------------------------------------------- 1 | MYSQL_DATABASE=photoview 2 | MYSQL_USER=photoview 3 | MYSQL_PASSWORD=photoview 4 | MYSQL_RANDOM_ROOT_PASSWORD=1 -------------------------------------------------------------------------------- /photoview/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | db: 5 | container_name: photoview_db 6 | image: mariadb:10.5 7 | restart: always 8 | env_file: db.env 9 | volumes: 10 | - db_data:/var/lib/mysql 11 | 12 | photoview: 13 | container_name: photoview 14 | image: viktorstrate/photoview:2 15 | restart: unless-stopped 16 | ports: 17 | - "8000:80" 18 | depends_on: 19 | - db 20 | 21 | env_file: .env 22 | 23 | volumes: 24 | - api_cache:/app/cache 25 | 26 | # Change This: to the directory where your photos are located on your server. 27 | # If the photos are located at `/home/user/photos`, then change this value 28 | # to the following: `/home/user/photos:/photos:ro`. 29 | # You can mount multiple paths, if your photos are spread across multiple directories. 30 | - /mnt/sauron/Storage/Photos:/photos:ro 31 | - /mnt/sauron/Storage/Photos/A6000:/test:ro 32 | 33 | volumes: 34 | db_data: 35 | api_cache: 36 | -------------------------------------------------------------------------------- /pihole/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | # More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/ 4 | services: 5 | pihole: 6 | container_name: pihole 7 | image: pihole/pihole:latest 8 | ports: 9 | - "53:53/tcp" 10 | - "53:53/udp" 11 | - "67:67/udp" 12 | - "8080:80/tcp" 13 | # - "443:443/tcp" 14 | env_file: 15 | - pihole.env 16 | labels: 17 | - traefik.enable=true 18 | - traefik.frontend.rule=Host:pihole.arneman.home,pihole,pi.hole 19 | - traefik.frontend.entryPoints=http 20 | - traefik.port=80 21 | networks: 22 | - traefik 23 | # Volumes store your data between container upgrades 24 | volumes: 25 | - './etc-pihole/:/etc/pihole/' 26 | - './etc-dnsmasq.d/:/etc/dnsmasq.d/' 27 | dns: 28 | - 127.0.0.1 29 | - 1.1.1.1 30 | # Recommended but not required (DHCP needs NET_ADMIN) 31 | # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities 32 | # cap_add: 33 | # - NET_ADMIN 34 | restart: unless-stopped 35 | 36 | networks: 37 | traefik: 38 | external: true -------------------------------------------------------------------------------- /pihole/pihole.env.example: -------------------------------------------------------------------------------- 1 | TZ=America/New_York 2 | WEBPASSWORD=SECURE_PASSWORD -------------------------------------------------------------------------------- /plex/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | plex: 4 | image: lscr.io/linuxserver/plex 5 | container_name: plex 6 | network_mode: host 7 | environment: 8 | - PUID=1000 9 | - PGID=1000 10 | - VERSION=docker 11 | - PLEX_CLAIM=claim-CKs8vBV1cEnU6EDYavfS #optional 12 | volumes: 13 | - ./config:/config 14 | - mediamount:/media 15 | restart: unless-stopped 16 | 17 | volumes: 18 | mediamount: 19 | driver: local 20 | driver_opts: 21 | type: nfs 22 | o: addr=10.0.0.241,nolock,soft,rw 23 | device: ":/Media" 24 | -------------------------------------------------------------------------------- /portainer/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | portainer: 5 | image: portainer/portainer 6 | container_name: portainer 7 | restart: always 8 | ports: 9 | - "9000:9000" 10 | command: -H unix:///var/run/docker.sock 11 | labels: 12 | - traefik.enable=true 13 | - traefik.frontend.rule=Host:portainer.arneman.home,portainer 14 | - traefik.port=9000 15 | volumes: 16 | - /var/run/docker.sock:/var/run/docker.sock 17 | - portainer_data:/data 18 | 19 | volumes: 20 | portainer_data: 21 | -------------------------------------------------------------------------------- /pterodactyl/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | x-common: 3 | database: 4 | &db-environment 5 | # Do not remove the "&db-password" from the end of the line below, it is important 6 | # for Panel functionality. 7 | MYSQL_PASSWORD: &db-password "PTGSM" 8 | MYSQL_ROOT_PASSWORD: "PTGSM_ROOT" 9 | MYSQL_ROOT_HOST: "%" 10 | panel: 11 | &panel-environment 12 | APP_URL: "https://gsm.arneman.home" 13 | # A list of valid timezones can be found here: http://php.net/manual/en/timezones.php 14 | APP_TIMEZONE: "America/New_York" 15 | APP_SERVICE_AUTHOR: "gsm@arneman.home" 16 | # Uncomment the line below and set to a non-empty value if you want to use Let's Encrypt 17 | # to generate an SSL certificate for the Panel. 18 | # LE_EMAIL: "" 19 | mail: 20 | &mail-environment 21 | MAIL_FROM: "gsm@arneman.home" 22 | MAIL_DRIVER: "smtp" 23 | MAIL_HOST: "mail" 24 | MAIL_PORT: "1025" 25 | MAIL_USERNAME: "" 26 | MAIL_PASSWORD: "" 27 | MAIL_ENCRYPTION: "true" 28 | 29 | # 30 | # ------------------------------------------------------------------------------------------ 31 | # DANGER ZONE BELOW 32 | # 33 | # The remainder of this file likely does not need to be changed. Please only make modifications 34 | # below if you understand what you are doing. 35 | # 36 | services: 37 | database: 38 | image: library/mysql:8.0 39 | restart: always 40 | command: --default-authentication-plugin=mysql_native_password 41 | volumes: 42 | - "./database:/var/lib/mysql" 43 | environment: 44 | <<: *db-environment 45 | MYSQL_DATABASE: "panel" 46 | MYSQL_USER: "pterodactyl" 47 | cache: 48 | image: redis:alpine 49 | restart: always 50 | panel: 51 | image: ghcr.io/pterodactyl/panel:latest 52 | restart: always 53 | ports: 54 | - "8086:80" 55 | - "8444:443" 56 | links: 57 | - database 58 | - cache 59 | volumes: 60 | - "./var/:/app/var/" 61 | - "./nginx/:/etc/nginx/conf.d/" 62 | - "./certs/:/etc/letsencrypt/" 63 | - "./logs/:/app/storage/logs" 64 | environment: 65 | <<: *panel-environment 66 | <<: *mail-environment 67 | DB_PASSWORD: *db-password 68 | APP_ENV: "production" 69 | APP_ENVIRONMENT_ONLY: "false" 70 | CACHE_DRIVER: "redis" 71 | SESSION_DRIVER: "redis" 72 | QUEUE_DRIVER: "redis" 73 | REDIS_HOST: "cache" 74 | DB_HOST: "database" 75 | 76 | # networks: 77 | # default: 78 | # ipam: 79 | # config: 80 | # - subnet: 172.20.0.0/16 81 | -------------------------------------------------------------------------------- /relay/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | relay: 4 | image: brunneis/tor-relay-arm:x86-64 5 | container_name: relay 6 | # command: "./launch.sh brunneis/tor-relay:x86-64 middle" 7 | ports: 8 | - '9001:9001' 9 | - '9030:9030' 10 | env_file: 11 | - tor.env 12 | volumes: 13 | - './tor-data:/home/tor/data:Z' 14 | restart: unless-stopped -------------------------------------------------------------------------------- /relay/tor.env.example: -------------------------------------------------------------------------------- 1 | OR_PORT=9001 2 | DIR_PORT=9030 3 | NICKNAME=NICKNAME 4 | CONTACT_INFO=email@domain.com 5 | HOST_UID=0 -------------------------------------------------------------------------------- /rtmp/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | rtmp-hls: 4 | image: alqutami/rtmp-hls 5 | ports: 6 | - '1935:1935' 7 | - '8081:8080' 8 | -------------------------------------------------------------------------------- /seafile/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.0' 2 | services: 3 | db: 4 | image: mariadb:10.5 5 | container_name: seafile-mysql 6 | environment: 7 | - MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service. 8 | - MYSQL_LOG_CONSOLE=true 9 | volumes: 10 | - /opt/seafile-mysql/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store. 11 | networks: 12 | - seafile-net 13 | 14 | memcached: 15 | image: memcached:1.5.6 16 | container_name: seafile-memcached 17 | entrypoint: memcached -m 256 18 | networks: 19 | - seafile-net 20 | 21 | seafile: 22 | image: seafileltd/seafile-mc:latest 23 | container_name: seafile 24 | ports: 25 | - "8084:80" 26 | # - "443:443" # If https is enabled, cancel the comment. 27 | volumes: 28 | - /opt/seafile-data:/shared # Requested, specifies the path to Seafile data persistent store. 29 | environment: 30 | - DB_HOST=db 31 | - DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service. 32 | - TIME_ZONE=Etc/UTC # Optional, default is UTC. Should be uncomment and set to your local time zone. 33 | - SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'. 34 | - SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'. 35 | - SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not. 36 | - SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled. 37 | depends_on: 38 | - db 39 | - memcached 40 | networks: 41 | - seafile-net 42 | 43 | networks: 44 | seafile-net: -------------------------------------------------------------------------------- /soldat/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | soldat: 5 | container_name: soldat 6 | image: npflan/soldat 7 | ports: 8 | - 23073:23073/udp 9 | - 23073:23073/tcp 10 | - 23083:23083/udp 11 | working_dir: /soldat -------------------------------------------------------------------------------- /statping/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.3' 2 | 3 | services: 4 | statping: 5 | container_name: statping 6 | image: statping/statping:dev 7 | restart: always 8 | volumes: 9 | - statping_data:/app 10 | environment: 11 | DB_CONN: sqlite 12 | ports: 13 | - 8084:8080 14 | 15 | volumes: 16 | statping_data: -------------------------------------------------------------------------------- /teamspeak/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | teamspeak: 4 | image: teamspeak 5 | container_name: teamspeak 6 | restart: always 7 | volumes: 8 | - /opt/teamspeak/data:/var/ts3server 9 | ports: 10 | - 9987:9987/udp 11 | - 10011:10011 12 | - 30033:30033 13 | environment: 14 | TS3SERVER_LICENSE: accept 15 | -------------------------------------------------------------------------------- /terraria/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | terraria: 4 | container_name: terraria 5 | image: ryshe/terraria:latest 6 | stdin_open: true # docker run -i 7 | tty: true # docker run -t 8 | environment: 9 | - WORLD_FILENAME=world.wld 10 | - CONFIGPATH=config.json 11 | ports: 12 | - 7777:7777 13 | volumes: 14 | - ./world:/root/.local/share/Terraria/Worlds 15 | restart: unless-stopped -------------------------------------------------------------------------------- /tf2/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.3' 2 | services: 3 | tf2: 4 | network_mode: host 5 | volumes: 6 | - './data:/home/steam/tf-dedicated/' 7 | container_name: tf2 8 | environment: 9 | - SRCDS_TOKEN=46EC8F9C2F582B0F5C7D49D5B55C7A77 10 | - SRCDS_RCONPW="m4rkman" 11 | - SRCDS_PW="" 12 | - SRCDS_PORT=27015 13 | - SRCDS_TV_PORT=27020 14 | - SRCDS_IP="0" 15 | - SRCDS_FPSMAX=300 16 | - SRCDS_TICKRATE=66 17 | - SRCDS_MAXPLAYERS=24 18 | - SRCDS_REGION=0 19 | - SRCDS_STARTMAP="Pacifica_remake" 20 | - SRCDS_HOSTNAME="Hello Friendo TF2" 21 | image: cm2network/tf2 -------------------------------------------------------------------------------- /traefik/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | traefik: 5 | image: traefik:v1.7 6 | container_name: traefik 7 | env_file: 8 | - traefik.env 9 | ports: 10 | - "80:80" 11 | - "443:443" 12 | volumes: 13 | - '/var/run/docker.sock:/var/run/docker.sock' 14 | - './traefik.toml:/etc/traefik/traefik.toml' 15 | - ./logs:/etc/traefik/logs 16 | - ./acme.json:/acme.json 17 | - ./ssl:/ssl 18 | labels: 19 | - traefik.enable=true 20 | - traefik.frontend.rule=Host:traefik.arneman.home,traefik 21 | - traefik.port=8080 22 | networks: 23 | - traefik 24 | restart: always 25 | 26 | networks: 27 | traefik: 28 | external: true -------------------------------------------------------------------------------- /traefik/traefik.env.example: -------------------------------------------------------------------------------- 1 | CF_API_EMAIL = acme@domain.tld 2 | CF_API_KEY = GLOBAL_API_KEY 3 | TZ = America/New_York -------------------------------------------------------------------------------- /traefik/traefik.toml.example: -------------------------------------------------------------------------------- 1 | debug = false 2 | sendAnonymousUsage = true 3 | # defaultEntryPoints = ["http", "https"] 4 | 5 | ################################################################ 6 | # API and dashboard configuration 7 | ################################################################ 8 | [api] 9 | 10 | ################################################################ 11 | # Logging 12 | ################################################################ 13 | logLevel = "ERROR" 14 | [traefikLog] 15 | filePath = "/etc/traefik/logs/traefik.log" 16 | 17 | [accessLog] 18 | filePath = "/etc/traefik/logs/access.log" 19 | 20 | ################################################################ 21 | # Entry Points 22 | ################################################################ 23 | [entryPoints] 24 | [entryPoints.http] 25 | address = ":80" 26 | 27 | [entryPoints.redirecthttps] 28 | entryPoint = "https" 29 | 30 | [entryPoints.auth] 31 | headerField = "X-WebAuth-User" 32 | [entryPoints.auth.auth.basic] 33 | removeHeader = true 34 | users = [ 35 | "test:$apr1$jQMdOW7a$2TrTYhURODyDg8szktDWk0", 36 | ] 37 | 38 | [entryPoints.https] 39 | address = ":443" 40 | [entryPoints.https.tls] 41 | [[entryPoints.https.tls.certificates]] 42 | certFile = "/ssl/vault.crt" 43 | keyFile = "/ssl/vault.key" 44 | 45 | ################################################################ 46 | # Docker configuration backend 47 | ################################################################ 48 | [docker] 49 | domain = "docker.tld" 50 | watch = true 51 | network = "traefik" 52 | exposedByDefault = false 53 | 54 | ################################################################ 55 | # Lets Encrypt 56 | ################################################################ 57 | 58 | [acme] 59 | email = "acme@domain.tld" 60 | storage = "acme.json" 61 | entryPoint = "https" 62 | onHostRule = true 63 | resolvers = ["1.1.1.1:53", "8.8.8.8:53"] 64 | [acme.dnsChallenge] 65 | provider = "cloudflare" 66 | delayBeforeCheck = 0 67 | 68 | [[acme.domains]] 69 | main = "subdomain.domain.tld" -------------------------------------------------------------------------------- /warrior/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | warrior: 4 | container_name: warrior 5 | image: archiveteam/warrior-dockerfile 6 | environment: 7 | - WARRIOR_ID=warneman 8 | - SELECTED_PROJECT=auto 9 | # ports: 10 | # - '8001:8001' 11 | volumes: 12 | - archiver:/data/data 13 | networks: 14 | - traefik 15 | labels: 16 | - traefik.enable=true 17 | - traefik.frontend.rule=Host:warrior,warrior.arneman.home 18 | - traefik.frontend.entryPoints=http 19 | - traefik.port=8001 20 | restart: always 21 | 22 | volumes: 23 | archiver: 24 | driver: local 25 | driver_opts: 26 | type: nfs 27 | o: addr=freenas.arneman.home,nolock,soft,rw 28 | device: ":/mnt/FreeNAS-Vol/Archiver" 29 | 30 | networks: 31 | traefik: 32 | external: true 33 | -------------------------------------------------------------------------------- /watchtower/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | watchtower: 4 | image: v2tec/watchtower 5 | container_name: watchtower 6 | volumes: 7 | - /var/run/docker.sock:/var/run/docker.sock 8 | command: --interval 30 9 | restart: unless-stopped --------------------------------------------------------------------------------