Version 1

This commit is contained in:
Dustin Brunner 2021-03-14 14:34:40 +01:00
parent 2e27d570dd
commit 4ea086fb00
17 changed files with 628 additions and 0 deletions

View File

@ -1,2 +1,48 @@
# docker-compose-homeserver
Docker Compose application templates for homeserver setup
In this repository I share my docker-compose files, which I use in my homeserver environment.
<br>
# How to use these Files
These Containers are designed to work on a Debain based machine.
<br>You need to install docker (see https://docs.docker.com/engine/install/debian/)
<br>and docker-compose (see https://docs.docker.com/compose/install/).
<br>I also recommend to install portainer to monitor your created containers (see https://documentation.portainer.io/v2.0/deploy/ceinstalldocker/)
For each application there is a seperate folder.
You need to place these folders in your home-directory, for example into `/root`. The docker-compose files are designed in a way, that all configuration- and data-folders are stored in these application folders. If you want to backup your containers you simply backup these folders and you can restore them easily.
To deploy a container, go into the application-folder and type:
```
docker-compose up -d
```
# Application List
| Name | Description |
| -------- | ------------ |
| gitea | self-hosted Git service |
| hedgedoc | collaborative (multi user) markdown editor |
| icecast | audio streaming server |
| nextcloud | online file server / personal cloud |
| onlyoffice | webbrowser based office software, used with nextcloud
| npm | nginx proxy manager, nginy proxy with web ui |
| wordpress | content management system (CMS) / blog software |
| synapse | Matrix server, personal chat server |
| matrix-extensions | synapse-admin - User management for synapse with web ui |
| | element-web - Web Messenger client for matrix/element |
| duplicati | Automated backup software with web ui |
| overleaf | web based latex text editor with live preview (sharelatex) |
| lychee | web photo gallery |
| piwigo | web photo gallery <- Best one in my Opinion |
| picapport | web photo gallery |
<br><br>
# Sources
Most of these Files I have not written myself. I found these accross the web and somtimes adapted them to my needs.
Mainly these are the template files created by the respective developer of the application.
dustinbrun

View File

@ -0,0 +1,17 @@
version: "2.1"
services:
duplicati:
image: ghcr.io/linuxserver/duplicati
container_name: duplicati
environment:
- PUID=0
- PGID=0
- TZ=Europe/Berlin
# - CLI_ARGS= #optional
volumes:
- ./config:/config
- ./backups:/backups
- ./source:/source
ports:
- 8200:8200
restart: unless-stopped

46
gitea/docker-compose.yml Normal file
View File

@ -0,0 +1,46 @@
version: "2"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
- DB_TYPE=mysql
- DB_HOST=db:3306
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=123456
- APP_NAME=My_Git_Server
- DISABLE_SSH=true
- DISABLE_REGISTRATION=true
- DOMAIN=git.local
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_USER=gitea
- MYSQL_PASSWORD=123456
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql

View File

@ -0,0 +1,35 @@
version: "3"
services:
mariadb:
image: ghcr.io/linuxserver/mariadb:latest
container_name: hedgedoc_mariadb
restart: always
volumes:
- ./db_config:/config
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=hedgedoc
- MYSQL_USER=hedgedoc
- MYSQL_PASSWORD=123456
- PGID=0
- PUID=0
- TZ=Europe/Berlin
hedgedoc:
image: ghcr.io/linuxserver/hedgedoc:latest
container_name: hedgedoc
restart: always
depends_on:
- mariadb
volumes:
- ./config:/config
environment:
- DB_HOST=mariadb
- DB_USER=hedgedoc
- DB_PASS=123456
- DB_NAME=hedgedoc
- DB_PORT=3306
- PGID=0
- PUID=0
- TZ=Europe/Berlin
ports:
- "86:3000"

View File

@ -0,0 +1,18 @@
version: "2"
services:
icecast:
image: infiniteproject/icecast:latest
environment:
- ICECAST_HOSTNAME=My_Stream
- ICECAST_ADMIN_PASSWORD=changeme
- ICECAST_ADMIN_USERNAME=admin
- ICECAST_SOURCE_PASSWORD=changeme
- ICECAST_LOCATION=My_home
- ICECAST_MAX_CLIENTS=25
- ICECAST_MAX_SOURCES=5
restart: always
# volumes:
# - ./config:/etc/icecast2
ports:
- "85:8000"

83
lychee/docker-compose.yml Normal file
View File

@ -0,0 +1,83 @@
#-------------------------------------------
# Docker Compose
# @RobLandry
# Repo : https://github.com/LycheeOrg/Lychee-Laravel-Docker
#-------------------------------------------
version: '3'
services:
lychee_db:
container_name: lychee_db
image: mariadb:10
environment:
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_DATABASE=lychee
- MYSQL_USER=lychee
- MYSQL_PASSWORD=changeme
expose:
- 3306
volumes:
- ./mysql:/var/lib/mysql
networks:
- lychee
restart: unless-stopped
lychee:
image: lycheeorg/lychee
container_name: lychee
ports:
- 90:80
volumes:
- ./lychee/conf:/conf
- ./lychee/uploads:/uploads
- ./lychee/sym:/sym
networks:
- lychee
environment:
#- PUID=1000
#- PGID=1000
# PHP timezone e.g. PHP_TZ=America/New_York
- PHP_TZ=Germany/Berlin
#- APP_NAME=Laravel
#- APP_ENV=local
#- APP_DEBUG=true
#- APP_URL=http://localhost
#- LOG_CHANNEL=stack
- DB_CONNECTION=mysql
- DB_HOST=lychee_db
- DB_PORT=3306
- DB_DATABASE=lychee
- DB_USERNAME=lychee
- DB_PASSWORD=changeme
#- DB_DROP_CLEAR_TABLES_ON_ROLLBACK=false
#- DB_OLD_LYCHEE_PREFIX=''
#- BROADCAST_DRIVER=log
#- CACHE_DRIVER=file
#- SESSION_DRIVER=file
#- SESSION_LIFETIME=120
#- QUEUE_DRIVER=sync
#- SECURITY_HEADER_HSTS_ENABLE=false
#- REDIS_HOST=127.0.0.1
#- REDIS_PASSWORD=null
#- REDIS_PORT=6379
#- MAIL_DRIVER=smtp
#- MAIL_HOST=smtp.mailtrap.io
#- MAIL_PORT=2525
#- MAIL_USERNAME=null
#- MAIL_PASSWORD=null
#- MAIL_ENCRYPTION=null
#- PUSHER_APP_ID=''
#- PUSHER_APP_KEY=''
#- PUSHER_APP_SECRET=''
#- PUSHER_APP_CLUSTER=mt1
- STARTUP_DELAY=30
restart: unless-stopped
depends_on:
- lychee_db
networks:
lychee:
volumes:
mysql:

View File

@ -0,0 +1,16 @@
version: "2"
services:
element-web:
image: vectorim/element-web
restart: unless-stopped
volumes:
- ./element-web-config/config.json:/app/config.json
ports:
- "91:80"
synapse-admin:
image: awesometechnologies/synapse-admin
restart: unless-stopped
ports:
- "92:80"

View File

@ -0,0 +1,54 @@
{
"default_server_config": {
"m.homeserver": {
"base_url": "--Chatserver-URL--",
"server_name": "My-Chat"
},
"m.identity_server": {
"base_url": "--Chatserver-URL--"
}
},
"disable_custom_urls": true,
"disable_guests": false,
"disable_login_language_selector": false,
"disable_3pid_login": false,
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"defaultCountryCode": "DE",
"showLabsSettings": false,
"features": {
"feature_new_spinner": false
},
"default_federate": true,
"default_theme": "light",
"roomDirectory": {
"servers": [
"matrix.org"
]
},
"piwik": {
"url": "https://piwik.riot.im/",
"whitelistedHSUrls": ["https://matrix.org"],
"whitelistedISUrls": ["https://vector.im", "https://matrix.org"],
"siteId": 1
},
"enable_presence_by_hs_url": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
},
"settingDefaults": {
"breadcrumbs": true
},
"jitsi": {
"preferredDomain": "jitsi.riot.im"
}
}

View File

@ -0,0 +1,32 @@
version: '2'
volumes:
nextcloud:
db:
services:
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- ./db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
environment:
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_PASSWORD=changeme
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
ports:
- 80:80
- 443:443
links:
- db
volumes:
- ./nextcloud:/var/www/html
- ./nextcloud_data:/var/www/html/data
restart: always

10
npm/config.json Normal file
View File

@ -0,0 +1,10 @@
{
"database": {
"engine": "mysql",
"host": "db",
"name": "npm",
"user": "npm",
"password": "changeme",
"port": 3306
}
}

28
npm/docker-compose.yml Normal file
View File

@ -0,0 +1,28 @@
version: "3"
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: always
ports:
- 80:80
- 81:81
- 443:443
volumes:
- ./config.json:/app/config/production.json
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- db
environment:
# if you want pretty colors in your docker logs:
- FORCE_COLOR=1
db:
image: mariadb:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: "npm"
MYSQL_DATABASE: "npm"
MYSQL_USER: "npm"
MYSQL_PASSWORD: "changeme"
volumes:
- ./data/mysql:/var/lib/mysql

View File

@ -0,0 +1,10 @@
version: '2'
services:
docserver:
image: onlyoffice/documentserver
restart: always
ports:
- 81:80
environment:
- JWT_ENABLED=true
- JWT_SECRET=changeme

146
overleaf/docker-compose.yml Normal file
View File

@ -0,0 +1,146 @@
version: '2.2'
services:
sharelatex:
restart: always
# Server Pro users:
# image: quay.io/sharelatex/sharelatex-pro
image: sharelatex/sharelatex
container_name: sharelatex
depends_on:
mongo:
condition: service_healthy
redis:
condition: service_started
ports:
- 83:80
links:
- mongo
- redis
volumes:
- ./sharelatex_data:/var/lib/sharelatex
########################################################################
#### Server Pro: Un-comment the following line to mount the docker ####
#### socket, required for Sibling Containers to work ####
########################################################################
# - /var/run/docker.sock:/var/run/docker.sock
environment:
SHARELATEX_APP_NAME: Overleaf Community Edition
SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex
# Same property, unfortunately with different names in
# different locations
SHARELATEX_REDIS_HOST: redis
REDIS_HOST: redis
ENABLED_LINKED_FILE_TYPES: 'url,project_file'
# Enables Thumbnail generation using ImageMagick
ENABLE_CONVERSIONS: 'true'
# Disables email confirmation requirement
EMAIL_CONFIRMATION_DISABLED: 'true'
# temporary fix for LuaLaTex compiles
# see https://github.com/overleaf/overleaf/issues/695
TEXMFVAR: /var/lib/sharelatex/tmp/texmf-var
## Set for SSL via nginx-proxy
#VIRTUAL_HOST: 103.112.212.22
# SHARELATEX_SITE_URL: http://sharelatex.mydomain.com
# SHARELATEX_NAV_TITLE: Our ShareLaTeX Instance
# SHARELATEX_HEADER_IMAGE_URL: http://somewhere.com/mylogo.png
# SHARELATEX_ADMIN_EMAIL: support@it.com
# SHARELATEX_LEFT_FOOTER: '[{"text": "Powered by <a href=\"https://www.sharelatex.com\">ShareLaTeX</a> 2016"},{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
# SHARELATEX_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'
# SHARELATEX_EMAIL_FROM_ADDRESS: "team@sharelatex.com"
# SHARELATEX_EMAIL_AWS_SES_ACCESS_KEY_ID:
# SHARELATEX_EMAIL_AWS_SES_SECRET_KEY:
# SHARELATEX_EMAIL_SMTP_HOST: smtp.mydomain.com
# SHARELATEX_EMAIL_SMTP_PORT: 587
# SHARELATEX_EMAIL_SMTP_SECURE: false
# SHARELATEX_EMAIL_SMTP_USER:
# SHARELATEX_EMAIL_SMTP_PASS:
# SHARELATEX_EMAIL_SMTP_TLS_REJECT_UNAUTH: true
# SHARELATEX_EMAIL_SMTP_IGNORE_TLS: false
# SHARELATEX_CUSTOM_EMAIL_FOOTER: "<div>This system is run by department x </div>"
################
## Server Pro ##
################
# SANDBOXED_COMPILES: 'true'
# SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
# SANDBOXED_COMPILES_HOST_DIR: '/var/sharelatex_data/data/compiles'
# SYNCTEX_BIN_HOST_PATH: '/var/sharelatex_data/bin/synctex'
# DOCKER_RUNNER: 'false'
## Works with test LDAP server shown at bottom of docker compose
# SHARELATEX_LDAP_URL: 'ldap://ldap:389'
# SHARELATEX_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com'
# SHARELATEX_LDAP_SEARCH_FILTER: '(uid={{username}})'
# SHARELATEX_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com'
# SHARELATEX_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone'
# SHARELATEX_LDAP_EMAIL_ATT: 'mail'
# SHARELATEX_LDAP_NAME_ATT: 'cn'
# SHARELATEX_LDAP_LAST_NAME_ATT: 'sn'
# SHARELATEX_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true'
# SHARELATEX_TEMPLATES_USER_ID: "578773160210479700917ee5"
# SHARELATEX_NEW_PROJECT_TEMPLATE_LINKS: '[ {"name":"All Templates","url":"/templates/all"}]'
# SHARELATEX_PROXY_LEARN: "true"
mongo:
restart: always
image: mongo
container_name: mongo
expose:
- 27017
volumes:
- ./mongo_data:/data/db
healthcheck:
test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
interval: 10s
timeout: 10s
retries: 5
redis:
restart: always
image: redis:5
container_name: redis
expose:
- 6379
volumes:
- ./redis_data:/data
# ldap:
# restart: always
# image: rroemhild/test-openldap
# container_name: ldap
# expose:
# - 389
# See https://github.com/jwilder/nginx-proxy for documentation on how to configure the nginx-proxy container,
# and https://github.com/overleaf/overleaf/wiki/HTTPS-reverse-proxy-using-Nginx for an example of some recommended
# settings. We recommend using a properly managed nginx instance outside of the Overleaf Server Pro setup,
# but the example here can be used if you'd prefer to run everything with docker-compose
# nginx-proxy:
# image: jwilder/nginx-proxy
# container_name: nginx-proxy
# ports:
# #- "80:80"
# - "443:443"
# volumes:
# - /var/run/docker.sock:/tmp/docker.sock:ro
# - /home/sharelatex/tmp:/etc/nginx/certs

View File

@ -0,0 +1,15 @@
version: '3'
services:
picapport:
image: whatever4711/picapport
restart: always
ports:
- 84:80
environment:
- Xms=512m
- Xmx=1g
- PICAPPORT_LANG=de
volumes:
- ./config:/opt/picapport/.picapport
- ./photos:/srv/photos

27
piwigo/docker-compose.yml Normal file
View File

@ -0,0 +1,27 @@
version: "2.1"
services:
piwigo:
image: linuxserver/piwigo
container_name: piwigo
environment:
#- PUID=0
#- PGID=0
- TZ=Europe/Berlin
volumes:
- ./config:/config
- ./fotos_cloud:/config/www/gallery/fotos_cloud
ports:
- 82:80
restart: unless-stopped
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- ./db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_PASSWORD=changeme
- MYSQL_DATABASE=piwigo
- MYSQL_USER=piwigo

View File

@ -0,0 +1,14 @@
version: "2"
services:
synapse:
image: matrixdotorg/synapse:latest
environment:
- TZ=DE
- UID=0
- GID=0
restart: always
volumes:
- ./synapse-data:/data
ports:
- "8008:8008"

View File

@ -0,0 +1,31 @@
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 84:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: changeme
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: changeme
MYSQL_ROOT_PASSWORD: changeme
volumes:
- ./db:/var/lib/mysql
volumes:
wordpress:
db: