Initial server configuration
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
data
|
||||
db
|
||||
.env
|
||||
19
compose.yml
Normal file
19
compose.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
# /services/portainer/compose.yml
|
||||
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:lts
|
||||
container_name: portainer
|
||||
restart: always
|
||||
networks:
|
||||
- traefik
|
||||
ports:
|
||||
- 8000:8000
|
||||
- 9443:9443
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
39
gitea/compose.yml
Normal file
39
gitea/compose.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
# /services/gitea/compose.yml
|
||||
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:1
|
||||
container_name: gitea
|
||||
restart: always
|
||||
depends_on:
|
||||
- gitea_db
|
||||
environment:
|
||||
- GITEA__database__DB_TYPE=postgres
|
||||
- GITEA__database__HOST=gitea_db:5432
|
||||
- GITEA__database__NAME=gitea
|
||||
- GITEA__database__USER=gitea
|
||||
- GITEA__database__PASSWD=${DB_PASSWORD}
|
||||
networks:
|
||||
- default
|
||||
- traefik
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
gitea_db:
|
||||
image: postgres:17
|
||||
container_name: gitea_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=gitea
|
||||
- POSTGRES_USER=gitea
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- ./db:/var/lib/postgresql/data
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
46
nextcloud/compose.yml
Normal file
46
nextcloud/compose.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
# /services/nextcloud/compose.yml
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
image: nextcloud:31
|
||||
container_name: nextcloud
|
||||
restart: always
|
||||
depends_on:
|
||||
- nextcloud_db
|
||||
- nextcloud_redis
|
||||
environment:
|
||||
- POSTGRES_HOST=nextcloud_db
|
||||
- POSTGRES_DB=nextcloud
|
||||
- POSTGRES_USER=nextcloud
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
- REDIS_HOST=nextcloud_redis
|
||||
networks:
|
||||
- default
|
||||
- traefik
|
||||
volumes:
|
||||
- ./config/opcache.ini:/usr/local/etc/php/conf.d/opcache.ini:ro
|
||||
- ./data:/var/www/html
|
||||
|
||||
nextcloud_db:
|
||||
image: postgres:17
|
||||
container_name: nextcloud_db
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_DB=nextcloud
|
||||
- POSTGRES_USER=nextcloud
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
networks:
|
||||
- default
|
||||
volumes:
|
||||
- ./db:/var/lib/postgresql/data
|
||||
|
||||
nextcloud_redis:
|
||||
image: redis:8
|
||||
container_name: nextcloud_redis
|
||||
restart: always
|
||||
networks:
|
||||
- default
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
8
nextcloud/config/opcache.ini
Normal file
8
nextcloud/config/opcache.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
[opcache]
|
||||
opcache.enable=1
|
||||
opcache.enable_cli=1
|
||||
opcache.memory_consumption=256
|
||||
opcache.interned_strings_buffer=16
|
||||
opcache.max_accelerated_files=10000
|
||||
opcache.revalidate_freq=1
|
||||
opcache.save_comments=1
|
||||
16
portainer/compose.yml
Normal file
16
portainer/compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
# /services/portainer/compose.yml
|
||||
|
||||
services:
|
||||
portainer:
|
||||
image: portainer/portainer-ce:lts
|
||||
container_name: portainer
|
||||
restart: always
|
||||
networks:
|
||||
- traefik
|
||||
volumes:
|
||||
- ./data:/data
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
18
traefik/compose.yml
Normal file
18
traefik/compose.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
# /services/traefik/compose.yml
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:3
|
||||
container_name: traefik
|
||||
restart: always
|
||||
networks:
|
||||
- traefik
|
||||
ports:
|
||||
- 80:80
|
||||
- 443:443
|
||||
volumes:
|
||||
- ./:/etc/traefik
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
9
traefik/config/dashboard.yml
Normal file
9
traefik/config/dashboard.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
# /services/traefik/config/dashboard.yml
|
||||
|
||||
http:
|
||||
routers:
|
||||
traefik:
|
||||
entryPoints:
|
||||
- https
|
||||
rule: Host(`traefik.eliasfink.de`)
|
||||
service: api@internal
|
||||
15
traefik/config/gitea.yml
Normal file
15
traefik/config/gitea.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
# /services/traefik/config/gitea.yml
|
||||
|
||||
http:
|
||||
routers:
|
||||
git:
|
||||
entryPoints:
|
||||
- https
|
||||
rule: Host(`git.eliasfink.de`)
|
||||
service: gitea
|
||||
|
||||
services:
|
||||
gitea:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://gitea:3000
|
||||
18
traefik/config/home.yml
Normal file
18
traefik/config/home.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
# /services/traefik/config/home.yml
|
||||
|
||||
http:
|
||||
routers:
|
||||
server:
|
||||
entryPoints:
|
||||
- https
|
||||
rule: Host(`server.eliasfink.de`)
|
||||
middlewares:
|
||||
- home-redirect
|
||||
service: noop@internal
|
||||
|
||||
middlewares:
|
||||
home-redirect:
|
||||
redirectRegex:
|
||||
permanent: true
|
||||
regex: ^.+$
|
||||
replacement: https://eliasfink.de
|
||||
15
traefik/config/nextcloud.yml
Normal file
15
traefik/config/nextcloud.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
# /services/traefik/config/nextcloud.yml
|
||||
|
||||
http:
|
||||
routers:
|
||||
cloud:
|
||||
entryPoints:
|
||||
- https
|
||||
rule: Host(`cloud.eliasfink.de`)
|
||||
service: nextcloud
|
||||
|
||||
services:
|
||||
nextcloud:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://nextcloud:80
|
||||
15
traefik/config/portainer.yml
Normal file
15
traefik/config/portainer.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
# /services/traefik/config/portainer.yml
|
||||
|
||||
http:
|
||||
routers:
|
||||
portainer:
|
||||
entryPoints:
|
||||
- https
|
||||
rule: Host(`portainer.eliasfink.de`)
|
||||
service: portainer
|
||||
|
||||
services:
|
||||
portainer:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://portainer:9443
|
||||
16
traefik/config/security.yml
Normal file
16
traefik/config/security.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
# /services/traefik/config/security.yml
|
||||
|
||||
http:
|
||||
middlewares:
|
||||
default-security:
|
||||
chain:
|
||||
middlewares:
|
||||
- secure-headers
|
||||
secure-headers:
|
||||
headers:
|
||||
hostsProxyHeaders:
|
||||
- X-Forwarded-Host
|
||||
stsSeconds: 31536000
|
||||
stsIncludeSubdomains: true
|
||||
stsPreload: true
|
||||
referrerPolicy: same-origin
|
||||
34
traefik/traefik.yml
Normal file
34
traefik/traefik.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
# /services/traefik/traefik.yml
|
||||
|
||||
global:
|
||||
checkNewVersion: true
|
||||
sendAnonymousUsage: false
|
||||
|
||||
entryPoints:
|
||||
http:
|
||||
address: :80
|
||||
http:
|
||||
redirections:
|
||||
entryPoint:
|
||||
to: https
|
||||
https:
|
||||
address: :443
|
||||
http:
|
||||
middlewares:
|
||||
- default-security
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
|
||||
api: {}
|
||||
|
||||
providers:
|
||||
file:
|
||||
directory: /etc/traefik/config
|
||||
watch: true
|
||||
|
||||
certificatesResolvers:
|
||||
letsencrypt:
|
||||
acme:
|
||||
email: mail@eliasfink.de
|
||||
# caServer: https://acme-staging-v02.api.letsencrypt.org/directory # use staging server instead of production
|
||||
tlsChallenge: {}
|
||||
12
watchtower/compose.yml
Normal file
12
watchtower/compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
# /services/watchtower/compose.yml
|
||||
|
||||
services:
|
||||
watchtower:
|
||||
image: containrrr/watchtower:arm64v8-latest
|
||||
container_name: watchtower
|
||||
restart: always
|
||||
command:
|
||||
--cleanup
|
||||
--schedule "0 3 * * *"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
Reference in New Issue
Block a user