diff --git a/README.md b/README.md
index d50e140..5916817 100644
--- a/README.md
+++ b/README.md
@@ -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.
+
+
+
+# How to use these Files
+These Containers are designed to work on a Debain based machine.
+
You need to install docker (see https://docs.docker.com/engine/install/debian/)
+
and docker-compose (see https://docs.docker.com/compose/install/).
+
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 |
+
+
+# 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
\ No newline at end of file
diff --git a/duplicati/docker-compose.yml b/duplicati/docker-compose.yml
new file mode 100644
index 0000000..8269ced
--- /dev/null
+++ b/duplicati/docker-compose.yml
@@ -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
diff --git a/gitea/docker-compose.yml b/gitea/docker-compose.yml
new file mode 100644
index 0000000..e955e73
--- /dev/null
+++ b/gitea/docker-compose.yml
@@ -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
diff --git a/hedgedoc/docker-compose.yml b/hedgedoc/docker-compose.yml
new file mode 100644
index 0000000..61f816f
--- /dev/null
+++ b/hedgedoc/docker-compose.yml
@@ -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"
diff --git a/icecast/docker-compose.yml b/icecast/docker-compose.yml
new file mode 100644
index 0000000..dafbe8a
--- /dev/null
+++ b/icecast/docker-compose.yml
@@ -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"
diff --git a/lychee/docker-compose.yml b/lychee/docker-compose.yml
new file mode 100644
index 0000000..a36cc7e
--- /dev/null
+++ b/lychee/docker-compose.yml
@@ -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:
diff --git a/matrix-extensions/docker-compose.yml b/matrix-extensions/docker-compose.yml
new file mode 100644
index 0000000..d4f04ff
--- /dev/null
+++ b/matrix-extensions/docker-compose.yml
@@ -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"
diff --git a/matrix-extensions/element-web-config/config.json b/matrix-extensions/element-web-config/config.json
new file mode 100644
index 0000000..8f91b70
--- /dev/null
+++ b/matrix-extensions/element-web-config/config.json
@@ -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"
+ }
+}
diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml
new file mode 100644
index 0000000..a906bd9
--- /dev/null
+++ b/nextcloud/docker-compose.yml
@@ -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
diff --git a/npm/config.json b/npm/config.json
new file mode 100644
index 0000000..ad6ef51
--- /dev/null
+++ b/npm/config.json
@@ -0,0 +1,10 @@
+{
+ "database": {
+ "engine": "mysql",
+ "host": "db",
+ "name": "npm",
+ "user": "npm",
+ "password": "changeme",
+ "port": 3306
+ }
+}
\ No newline at end of file
diff --git a/npm/docker-compose.yml b/npm/docker-compose.yml
new file mode 100644
index 0000000..0388ba8
--- /dev/null
+++ b/npm/docker-compose.yml
@@ -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
diff --git a/onlyoffice/docker-compose.yml b/onlyoffice/docker-compose.yml
new file mode 100644
index 0000000..c0d769e
--- /dev/null
+++ b/onlyoffice/docker-compose.yml
@@ -0,0 +1,10 @@
+version: '2'
+services:
+ docserver:
+ image: onlyoffice/documentserver
+ restart: always
+ ports:
+ - 81:80
+ environment:
+ - JWT_ENABLED=true
+ - JWT_SECRET=changeme
\ No newline at end of file
diff --git a/overleaf/docker-compose.yml b/overleaf/docker-compose.yml
new file mode 100644
index 0000000..1f942fd
--- /dev/null
+++ b/overleaf/docker-compose.yml
@@ -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 ShareLaTeX 2016"},{"text": "Another page I want to link to can be found here"} ]'
+ # 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: "