Giter Site home page Giter Site logo

baptistebdn / docker-selfhosted-apps Goto Github PK

View Code? Open in Web Editor NEW
987.0 16.0 81.0 1.13 MB

Collection of selfhosted apps with docker only ! Traefik, Bitwarden, Wireguard with Pihole, Synapse with Elements, etc.

Shell 73.30% HTML 1.16% PHP 25.54%
guide docker traefik self-hosted

docker-selfhosted-apps's Introduction

docker

Guide with examples !

Services

Information

The overall guide is centered around example. Each of the services is tied with either a docker-compose or a script, everything has been made so that each service is almost ready to use, only a few user-specific variable are required.

All services respect a certain format :

  • About - basic overview of the service
  • Table of Contents
  • Files structure - lists all the files and folder required
  • Information - detailed information about the service and the example
  • Usage - required configuration and commands to use the service
  • Update - how to update the container, most of the time it is using watchtower
  • Backup - how to back up the container, most of the time it is using borg-backup

Traefik is the core of this setup as it is the reverse proxy, it should be one of the first services to configure and use.

Requirement

Basic linux knowledge is required and docker is a must-have, everything should be pretty easy to set up but understanding docker will make it even more easy. Each guide gives links to the official documentation, they are usually well written, and they should answer most of your questions.

On the technical side :

  • docker and docker-compose (1.X) are required, the installation process is fairly easy.
  • a domain, some can be found for free but most are usually pretty cheap.

Usage

All the docker-compose provided in this repository are ready to be used, and you should not have to touch them. The only thing you need to change are the .env file provided with the docker-compose, they are user-specific.

To begin with, you can clone this repository on your host.

git clone https://github.com/BaptisteBdn/docker-selfhosted-apps.git

Provided you already have a domain, you can use the following commands to update all .env at once as well as some specific config files.

DOMAIN=your-domain.com
find ./ \( -name ".env" -or -name "*.yml" -or -name "*.json" \) -type f -exec sed -i 's/example.com/'$DOMAIN'/g' {} \;

You can now go forward and try whatever service you want, every example as a # Usage section to guide you through the process. However, as most of them are using Traefik, it is recommended to set this one first.

Other

Docker and UFW

UFW is a popular iptables front end on Ubuntu that makes it easy to manage firewall rules. But when Docker is installed, Docker bypass the UFW rules and the published ports can be accessed from outside.

An easy fix is available, allowing to easily manage your firewall. As most of the services are going through Traefik, only the port 443 is mandatory. If another port is required, it will be listed in the requirements.

Docker tips

  • Get shell access whilst the container is running
    docker exec -it container-name /bin/bash
    
  • Monitor the logs of the container in realtime
    docker logs -f container-name
    

Docker images

Most images are used with the tag latest as it simplify the testing. It is usually not recommended running an image with this tag as it is not very dynamic and precise. Feel free to experiment with the provided docker-compose examples and then use a better versionning system. For more information about latest.

Updating docker images

This repository images are automatically updated with watchtower, however this can be a security risk. More details in the watchtower guide.

If you want to manually update an image, you can use docker-compose.

  • Update all images for a specific docker-compose file
    sudo docker-compose pull
    
  • Update a single image
    sudo docker-compose pull image-name
    
  • Recreate all updated containers with docker-compose
    sudo docker-compose up -d
    
  • Recreate a single container with docker-compose
    sudo docker-compose up -d container-name
    
  • Remove all dangling and unused images
    sudo docker image prune  -a
    

Docker tools

Some useful tools to manage your private docker infrastructure.

  • lazydocker - A simple terminal UI for both docker and docker-compose, written in Go with the gocui library. By @jesseduffield
  • dive - A tool for exploring each layer in a docker image. By @anchore.
  • grype - A vulnerability scanner for container images and filesystems. By @anchore.

Docker resources

A compilation of resources mainly focus on security.

Credits

This guide is inspired from @DoTheEvo own docker guide, built with caddy at its core, check it out !

docker-selfhosted-apps's People

Contributors

baptistebdn avatar luciano-fiandesio avatar siorde avatar sneakyhulk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-selfhosted-apps's Issues

pihole server ip

In the wireguard-pihole-unbound yml, should pihole's server ip be 10.1.0.100 or 10.2.0.100?

Fresh install but then errors...

First of all, thanks for this resource! I've learned a lot trying to get this set up.

I've got Docker Engine and Compose running without issue on RockPro64 / Debian.
I cloned your git repository.
Started by setting up Traefik. Rather than using your "find" command I manually read the .yml and .env files and inputted my information from Namecheap. (I set up API access there).
Then I proceeded to setup the webserver, adjusted the yml and env files, but since then I have not been able to get it to work. Errors thrown. See logs below.
Help, please? And thank you!

time="2022-01-31T12:35:25Z" level=info msg="Configuration loaded from file: /traefik.yml"
time="2022-01-31T12:35:25Z" level=info msg="Traefik version 2.6.0 built on 2022-01-24T17:08:39Z"
time="2022-01-31T12:35:25Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider aggregator.ProviderAggregator"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider *file.Provider"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider *traefik.Provider"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider *docker.Provider"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-01-31T12:35:25Z" level=info msg="Starting provider *acme.Provider"
time="2022-01-31T12:35:25Z" level=info msg="Testing certificate renew..." providerName=mydnschallenge.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2022-01-31T12:35:28Z" level=error msg="empty args for matcher Host, []" entryPointName=https routerName=webserver@docker
time="2022-01-31T12:35:28Z" level=error msg="Unable to obtain ACME certificate for domains "": unable to generate a certificate in ACME provider when no domain is given" routerName=webserver@docker rule="Host(``)" providerName=mydnschallenge.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2022-01-31T12:55:14Z" level=info msg="I have to go..."
time="2022-01-31T12:55:14Z" level=info msg="Stopping server gracefully"
time="2022-01-31T12:55:14Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2022-01-31T12:55:14Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2022-01-31T12:55:14Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2022-01-31T12:55:14Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2022-01-31T12:55:14Z" level=info msg="Server stopped"
time="2022-01-31T12:55:14Z" level=info msg="Shutting down"
time="2022-01-31T12:55:49Z" level=info msg="Configuration loaded from file: /traefik.yml"
time="2022-01-31T12:55:49Z" level=info msg="Traefik version 2.6.0 built on 2022-01-24T17:08:39Z"
time="2022-01-31T12:55:49Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider aggregator.ProviderAggregator"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider *file.Provider"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider *traefik.Provider"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider *docker.Provider"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-01-31T12:55:49Z" level=info msg="Starting provider *acme.Provider"
time="2022-01-31T12:55:49Z" level=info msg="Testing certificate renew..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=mydnschallenge.acme
time="2022-01-31T13:01:38Z" level=info msg="I have to go..."
time="2022-01-31T13:01:38Z" level=info msg="Stopping server gracefully"
time="2022-01-31T13:01:38Z" level=error msg="accept tcp [::]:443: use of closed network connection" entryPointName=https
time="2022-01-31T13:01:38Z" level=error msg="accept tcp [::]:80: use of closed network connection" entryPointName=http
time="2022-01-31T13:01:38Z" level=error msg="close tcp [::]:443: use of closed network connection" entryPointName=https
time="2022-01-31T13:01:38Z" level=error msg="close tcp [::]:80: use of closed network connection" entryPointName=http
time="2022-01-31T13:01:38Z" level=info msg="Server stopped"
time="2022-01-31T13:01:38Z" level=info msg="Shutting down"
time="2022-01-31T13:01:50Z" level=info msg="Configuration loaded from file: /traefik.yml"
time="2022-01-31T13:01:50Z" level=info msg="Traefik version 2.6.0 built on 2022-01-24T17:08:39Z"
time="2022-01-31T13:01:50Z" level=debug msg="Static configuration loaded {"global":{"checkNewVersion":true},"serversTransport":{"maxIdleConnsPerHost":200},"entryPoints":{"http":{"address":":80","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{},"udp":{"timeout":"3s"}},"https":{"address":":443","transport":{"lifeCycle":{"graceTimeOut":"10s"},"respondingTimeouts":{"idleTimeout":"3m0s"}},"forwardedHeaders":{},"http":{},"udp":{"timeout":"3s"}}},"providers":{"providersThrottleDuration":"2s","docker":{"watch":true,"endpoint":"tcp://socket-proxy:2375","defaultRule":"Host({{ normalize .Name }})","swarmModeRefreshSeconds":"15s"},"file":{"directory":"/rules","watch":true}},"log":{"level":"DEBUG","format":"common"},"certificatesResolvers":{"mydnschallenge":{"acme":{"email":"[email protected]","caServer":"https://acme-v02.api.letsencrypt.org/directory\",\"storage\":\"./letsencrypt/acme.json\",\"keyType\":\"RSA4096\",\"certificatesDuration\":2160,\"dnsChallenge\":{\"provider\":\"namecheap\",\"delayBeforeCheck\":\"10s\"}}}},\"pilot\":{\"dashboard\":true}}"
time="2022-01-31T13:01:50Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-01-31T13:01:50Z" level=info msg="Starting provider aggregator.ProviderAggregator"
time="2022-01-31T13:01:50Z" level=debug msg="Start TCP Server" entryPointName=https
time="2022-01-31T13:01:50Z" level=debug msg="Start TCP Server" entryPointName=http
time="2022-01-31T13:01:50Z" level=info msg="Starting provider *file.Provider"
time="2022-01-31T13:01:50Z" level=debug msg="*file.Provider provider configuration: {"directory":"/rules","watch":true}"
time="2022-01-31T13:01:50Z" level=info msg="Starting provider *traefik.Provider"
time="2022-01-31T13:01:50Z" level=debug msg="*traefik.Provider provider configuration: {}"
time="2022-01-31T13:01:50Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-01-31T13:01:50Z" level=debug msg="*acme.ChallengeTLSALPN provider configuration: {"Timeout":4000000000}"
time="2022-01-31T13:01:50Z" level=info msg="Starting provider *docker.Provider"
time="2022-01-31T13:01:50Z" level=debug msg="*docker.Provider provider configuration: {"watch":true,"endpoint":"tcp://socket-proxy:2375","defaultRule":"Host(`{{ normalize .Name }}`)","swarmModeRefreshSeconds":"15s"}"
time="2022-01-31T13:01:50Z" level=info msg="Starting provider *acme.Provider"
time="2022-01-31T13:01:50Z" level=debug msg="*acme.Provider provider configuration: {"email":"[email protected]","caServer":"https://acme-v02.api.letsencrypt.org/directory\",\"storage\":\"./letsencrypt/acme.json\",\"keyType\":\"RSA4096\",\"certificatesDuration\":2160,\"dnsChallenge\":{\"provider\":\"namecheap\",\"delayBeforeCheck\":\"10s\"},\"ResolverName\":\"mydnschallenge\",\"store\":{},\"TLSChallengeProvider\":{\"Timeout\":4000000000},\"HTTPChallengeProvider\":{}}"
time="2022-01-31T13:01:50Z" level=debug msg="Attempt to renew certificates "720h0m0s" before expiry and check every "24h0m0s"" providerName=mydnschallenge.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2022-01-31T13:01:50Z" level=info msg="Testing certificate renew..." providerName=mydnschallenge.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
time="2022-01-31T13:01:50Z" level=debug msg="Configuration received from provider file: {"http":{"middlewares":{"whitelist":{"ipWhiteList":{"sourceRange":["0.0.0.0/0"]}}}},"tcp":{},"udp":{},"tls":{"options":{"TLSv13":{"minVersion":"VersionTLS13","cipherSuites":["TLS_AES_256_GCM_SHA384","TLS_CHACHA20_POLY1305_SHA256"],"clientAuth":{},"sniStrict":true,"alpnProtocols":["h2","http/1.1","acme-tls/1"]},"default":{"minVersion":"VersionTLS12","cipherSuites":["TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305","TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"],"clientAuth":{},"sniStrict":true,"alpnProtocols":["h2","http/1.1","acme-tls/1"]}}}}" providerName=file
time="2022-01-31T13:01:50Z" level=debug msg="Configuration received from provider internal: {"http":{"services":{"noop":{}},"serversTransports":{"default":{"maxIdleConnsPerHost":200}}},"tcp":{},"tls":{}}" providerName=internal
time="2022-01-31T13:01:50Z" level=debug msg="Configuration received from provider mydnschallenge.acme: {"http":{},"tls":{}}" providerName=mydnschallenge.acme
time="2022-01-31T13:01:50Z" level=debug msg="No default certificate, generating one" tlsStoreName=default
time="2022-01-31T13:01:50Z" level=debug msg="Provider connection established with docker 20.10.12 (API 1.41)" providerName=docker
time="2022-01-31T13:01:50Z" level=debug msg="Filtering disabled container" providerName=docker container=socket-proxy-traefik-9b52c6164e08a4a5e03292de91ba09007207b5183cc91951860e46660f1c42f1
time="2022-01-31T13:01:50Z" level=debug msg="Configuration received from provider docker: {"http":{"routers":{"http-catchall":{"entryPoints":["http"],"middlewares":["redirect-to-https"],"service":"traefik-traefik","rule":"hostregexp(`{host:.+}`)"},"root":{"entryPoints":["https"],"middlewares":["redirect-root-to-www"],"service":"traefik-traefik","rule":"host(`memexpk.com`)","tls":{}}},"services":{"traefik-traefik":{"loadBalancer":{"servers":[{"url":"http://172.18.0.3:80"}],"passHostHeader":true}}},"middlewares":{"redirect-root-to-www":{"redirectRegex":{"regex":"^https://memexpk\\\\.com/(.*)\",\"replacement\":\"https://www.memexpk.com/${1}\"}},\"redirect-to-https\":{\"redirectScheme\":{\"scheme\":\"https\",\"permanent\":true}}}},\"tcp\":{},\"udp\":{}}" providerName=docker
time="2022-01-31T13:01:50Z" level=debug msg="No default certificate, generating one" tlsStoreName=default
time="2022-01-31T13:01:51Z" level=debug msg="Adding certificate for domain(s) www.memexpk.com"
time="2022-01-31T13:01:51Z" level=debug msg="No default certificate, generating one" tlsStoreName=default
time="2022-01-31T13:01:52Z" level=debug msg="Adding certificate for domain(s) www.memexpk.com"
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" routerName=http-catchall@docker serviceName=traefik-traefik middlewareType=Pipelining middlewareName=pipelining entryPointName=http
time="2022-01-31T13:01:52Z" level=debug msg="Creating load-balancer" routerName=http-catchall@docker serviceName=traefik-traefik entryPointName=http
time="2022-01-31T13:01:52Z" level=debug msg="Creating server 0 http://172.18.0.3:80" serverName=0 serviceName=traefik-traefik entryPointName=http routerName=http-catchall@docker
time="2022-01-31T13:01:52Z" level=debug msg="child http://172.18.0.3:80 now UP"
time="2022-01-31T13:01:52Z" level=debug msg="Propagating new UP status"
time="2022-01-31T13:01:52Z" level=debug msg="Added outgoing tracing middleware traefik-traefik" entryPointName=http routerName=http-catchall@docker middlewareName=tracing middlewareType=TracingForwarder
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" entryPointName=http middlewareName=redirect-to-https@docker middlewareType=RedirectScheme routerName=http-catchall@docker
time="2022-01-31T13:01:52Z" level=debug msg="Setting up redirection to https " middlewareName=redirect-to-https@docker middlewareType=RedirectScheme routerName=http-catchall@docker entryPointName=http
time="2022-01-31T13:01:52Z" level=debug msg="Adding tracing to middleware" routerName=http-catchall@docker middlewareName=redirect-to-https@docker entryPointName=http
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" middlewareType=Recovery entryPointName=http middlewareName=traefik-internal-recovery
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" serviceName=traefik-traefik middlewareName=pipelining middlewareType=Pipelining entryPointName=https routerName=root@docker
time="2022-01-31T13:01:52Z" level=debug msg="Creating load-balancer" entryPointName=https routerName=root@docker serviceName=traefik-traefik
time="2022-01-31T13:01:52Z" level=debug msg="Creating server 0 http://172.18.0.3:80" serviceName=traefik-traefik serverName=0 entryPointName=https routerName=root@docker
time="2022-01-31T13:01:52Z" level=debug msg="child http://172.18.0.3:80 now UP"
time="2022-01-31T13:01:52Z" level=debug msg="Propagating new UP status"
time="2022-01-31T13:01:52Z" level=debug msg="Added outgoing tracing middleware traefik-traefik" middlewareName=tracing middlewareType=TracingForwarder entryPointName=https routerName=root@docker
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" middlewareType=RedirectRegex middlewareName=redirect-root-to-www@docker entryPointName=https routerName=root@docker
time="2022-01-31T13:01:52Z" level=debug msg="Setting up redirection from ^https://memexpk\\.com/(.*) to https://www.memexpk.com/${1}" routerName=root@docker middlewareType=RedirectRegex middlewareName=redirect-root-to-www@docker entryPointName=https
time="2022-01-31T13:01:52Z" level=debug msg="Adding tracing to middleware" routerName=root@docker middlewareName=redirect-root-to-www@docker entryPointName=https
time="2022-01-31T13:01:52Z" level=debug msg="Creating middleware" entryPointName=https middlewareType=Recovery middlewareName=traefik-internal-recovery
time="2022-01-31T13:01:52Z" level=debug msg="Adding route for memexpk.com with TLS options default" entryPointName=https

Gateway timeout for nextcloud

great repo, thanks for making it. I have an issue with nextcloud. I've got traefik, gotify, watchtower and vaultwarden all up and running correctly. Gotify and vaultwarden are accessible via https. I run nextcloud and i just get a gateway timeout when I try to load it via it's subdomain.

logs for the nextcloud container:

Initializing nextcloud 25.0.2.3 ...
New nextcloud instance
Initializing finished
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.3. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.21.0.3. Set the 'ServerName' directive globally to suppress this message
[Fri Dec 30 19:47:15.903451 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.54 (Debian) PHP/8.1.13 configured -- resuming normal operations
[Fri Dec 30 19:47:15.903537 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'

and for traefik:

time="2022-12-30T19:22:52Z" level=info msg="Configuration loaded from file: /traefik.yml"
time="2022-12-30T19:22:52Z" level=info msg="Traefik version 2.9.6 built on 2022-12-07T14:17:58Z"
time="2022-12-30T19:22:52Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider *file.Provider"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider *traefik.Provider"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider *docker.Provider"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2022-12-30T19:22:52Z" level=info msg="Starting provider *acme.Provider"
time="2022-12-30T19:22:52Z" level=info msg="Testing certificate renew..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=mydnschallenge.acme

I've changed the .env files and for traefik the docker-compose.yml and traefik.yml have been altered so it works with cloudflare.

Trilium persistent data directory should be '/home/node/trilium-data'

Hello, first of all i want to say thank you for this wonderful guide. Now i have a self-hosted service on my server.

Though i noticed, after restarting Trilium container, i was prompted the Setup window again. Tried writing a note and restart the container, and was prompted with the Setup window again. No data persistence. I checked the logs and it appeared that the data directory should be /home/node/trilium-data.

App HTTP server starting up at port 8080
{
  "appVersion": "0.50.2",
  "dbVersion": 194,
  "syncVersion": 25,
  "buildDate": "2022-02-09T22:52:36+01:00",
  "buildRevision": "23daaa2387a0655685377f0a541d154aeec2aae8",
  "dataDirectory": "/home/node/trilium-data",
  "clipperProtocolVersion": "1.0",
  "utcDateTime": "2022-02-19 10:12:15.352Z"
}

This issue also exists in the upstream repo, zadam/trilium#627, but it seems that the upstream wiki itself doesn't correct this inaccuracies.

Changing the volumes to the right directory inside the container seems to fix the persistent issue

Traefik Auto SSL issue

Hi, I just bumped into your guides lately and decided to follow it to have my proper self-hosted setup.
I have followed the guides step by step:

  • I have a fresh Ubuntu server with Docker & Docker Compose installed.
  • I have a domain name at Porkbun with API Access & supported by Traefik. (as shown here)
  • I did the easy fix for Docker & UFW as found in the guide.
    Then for Traefik, after I run docker compose up -d it is running but I got these in logs
root@sg:~# sudo docker logs traefik
time="2024-03-17T18:13:18Z" level=info msg="Configuration loaded from file: /traefik.yml"
time="2024-03-17T18:13:18Z" level=info msg="Traefik version 2.11.0 built on 2024-02-12T15:26:45Z"
time="2024-03-17T18:13:18Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
time="2024-03-17T18:13:18Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
time="2024-03-17T18:13:18Z" level=info msg="Starting provider *file.Provider"
time="2024-03-17T18:13:18Z" level=info msg="Starting provider *traefik.Provider"
time="2024-03-17T18:13:18Z" level=info msg="Starting provider *docker.Provider"
time="2024-03-17T18:13:18Z" level=info msg="Starting provider *acme.Provider"
time="2024-03-17T18:13:18Z" level=info msg="Testing certificate renew..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=mydnschallenge.acme
time="2024-03-17T18:13:18Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
time="2024-03-17T18:23:18Z" level=error msg="Provider connection error unexpected EOF, retrying in 651.765026ms" providerName=docker
time="2024-03-17T18:33:19Z" level=error msg="Provider connection error unexpected EOF, retrying in 260.554226ms" providerName=docker
time="2024-03-17T18:43:19Z" level=error msg="Provider connection error unexpected EOF, retrying in 633.208501ms" providerName=docker
time="2024-03-17T18:53:20Z" level=error msg="Provider connection error unexpected EOF, retrying in 606.130927ms" providerName=docker
time="2024-03-17T19:03:21Z" level=error msg="Provider connection error unexpected EOF, retrying in 277.707068ms" providerName=docker
time="2024-03-17T19:13:21Z" level=error msg="Provider connection error unexpected EOF, retrying in 275.729316ms" providerName=docker
time="2024-03-17T19:23:21Z" level=error msg="Provider connection error unexpected EOF, retrying in 299.072952ms" providerName=docker
time="2024-03-17T19:33:21Z" level=error msg="Provider connection error unexpected EOF, retrying in 676.726685ms" providerName=docker
time="2024-03-17T19:43:22Z" level=error msg="Provider connection error unexpected EOF, retrying in 571.355308ms" providerName=docker
time="2024-03-17T19:53:23Z" level=error msg="Provider connection error unexpected EOF, retrying in 392.06801ms" providerName=docker
time="2024-03-17T20:03:23Z" level=error msg="Provider connection error unexpected EOF, retrying in 746.93968ms" providerName=docker
time="2024-03-17T20:13:24Z" level=error msg="Provider connection error unexpected EOF, retrying in 501.97957ms" providerName=docker
time="2024-03-17T20:23:25Z" level=error msg="Provider connection error unexpected EOF, retrying in 429.253673ms" providerName=docker
time="2024-03-17T20:33:25Z" level=error msg="Provider connection error unexpected EOF, retrying in 337.500737ms" providerName=docker
time="2024-03-17T20:43:25Z" level=error msg="Provider connection error unexpected EOF, retrying in 586.946203ms" providerName=docker
time="2024-03-17T20:53:26Z" level=error msg="Provider connection error unexpected EOF, retrying in 692.780257ms" providerName=docker
time="2024-03-17T21:03:27Z" level=error msg="Provider connection error unexpected EOF, retrying in 488.644726ms" providerName=docker
time="2024-03-17T21:13:27Z" level=error msg="Provider connection error unexpected EOF, retrying in 369.213017ms" providerName=docker
time="2024-03-17T21:23:28Z" level=error msg="Provider connection error unexpected EOF, retrying in 348.044367ms" providerName=docker
time="2024-03-17T21:33:28Z" level=error msg="Provider connection error unexpected EOF, retrying in 419.714247ms" providerName=docker
time="2024-03-17T21:43:28Z" level=error msg="Provider connection error unexpected EOF, retrying in 702.676692ms" providerName=docker
time="2024-03-17T21:53:29Z" level=error msg="Provider connection error unexpected EOF, retrying in 437.740994ms" providerName=docker
time="2024-03-17T22:03:30Z" level=error msg="Provider connection error unexpected EOF, retrying in 412.412135ms" providerName=docker
time="2024-03-17T22:13:30Z" level=error msg="Provider connection error unexpected EOF, retrying in 679.487283ms" providerName=docker
time="2024-03-17T22:23:31Z" level=error msg="Provider connection error unexpected EOF, retrying in 584.859323ms" providerName=docker
time="2024-03-17T22:33:31Z" level=error msg="Provider connection error unexpected EOF, retrying in 463.400594ms" providerName=docker
time="2024-03-17T22:43:32Z" level=error msg="Provider connection error unexpected EOF, retrying in 370.086752ms" providerName=docker
time="2024-03-17T22:53:32Z" level=error msg="Provider connection error unexpected EOF, retrying in 517.481193ms" providerName=docker
time="2024-03-17T23:03:33Z" level=error msg="Provider connection error unexpected EOF, retrying in 469.967513ms" providerName=docker
time="2024-03-17T23:13:33Z" level=error msg="Provider connection error unexpected EOF, retrying in 278.584454ms" providerName=docker
time="2024-03-17T23:23:34Z" level=error msg="Provider connection error unexpected EOF, retrying in 583.076043ms" providerName=docker
time="2024-03-17T23:33:34Z" level=error msg="Provider connection error unexpected EOF, retrying in 267.056253ms" providerName=docker
time="2024-03-17T23:43:35Z" level=error msg="Provider connection error unexpected EOF, retrying in 378.520294ms" providerName=docker
time="2024-03-17T23:53:35Z" level=error msg="Provider connection error unexpected EOF, retrying in 701.057482ms" providerName=docker
time="2024-03-18T00:03:36Z" level=error msg="Provider connection error unexpected EOF, retrying in 681.913202ms" providerName=docker
time="2024-03-18T00:13:36Z" level=error msg="Provider connection error unexpected EOF, retrying in 655.986749ms" providerName=docker
time="2024-03-18T00:23:37Z" level=error msg="Provider connection error unexpected EOF, retrying in 521.627528ms" providerName=docker
time="2024-03-18T00:33:38Z" level=error msg="Provider connection error unexpected EOF, retrying in 496.804248ms" providerName=docker
time="2024-03-18T00:43:38Z" level=error msg="Provider connection error unexpected EOF, retrying in 496.334473ms" providerName=docker
time="2024-03-18T00:53:39Z" level=error msg="Provider connection error unexpected EOF, retrying in 336.776948ms" providerName=docker
time="2024-03-18T01:03:39Z" level=error msg="Provider connection error unexpected EOF, retrying in 583.97099ms" providerName=docker
time="2024-03-18T01:13:40Z" level=error msg="Provider connection error unexpected EOF, retrying in 649.584913ms" providerName=docker
time="2024-03-18T01:23:40Z" level=error msg="Provider connection error unexpected EOF, retrying in 261.009821ms" providerName=docker
time="2024-03-18T01:33:41Z" level=error msg="Provider connection error unexpected EOF, retrying in 732.491762ms" providerName=docker
time="2024-03-18T01:43:42Z" level=error msg="Provider connection error unexpected EOF, retrying in 607.196669ms" providerName=docker
time="2024-03-18T01:53:42Z" level=error msg="Provider connection error unexpected EOF, retrying in 384.580114ms" providerName=docker
time="2024-03-18T02:03:43Z" level=error msg="Provider connection error unexpected EOF, retrying in 520.173403ms" providerName=docker
time="2024-03-18T02:13:43Z" level=error msg="Provider connection error unexpected EOF, retrying in 636.362546ms" providerName=docker
time="2024-03-18T02:23:44Z" level=error msg="Provider connection error unexpected EOF, retrying in 725.407311ms" providerName=docker
time="2024-03-18T02:33:45Z" level=error msg="Provider connection error unexpected EOF, retrying in 695.467861ms" providerName=docker
time="2024-03-18T02:43:45Z" level=error msg="Provider connection error unexpected EOF, retrying in 706.009875ms" providerName=docker
time="2024-03-18T02:53:46Z" level=error msg="Provider connection error unexpected EOF, retrying in 404.5514ms" providerName=docker
time="2024-03-18T03:03:46Z" level=error msg="Provider connection error unexpected EOF, retrying in 615.884812ms" providerName=docker

I might need community help on this. Thanks in advance!

backup-borg-s3.sh - Gotify stats

Hi! First of all, thank you for this amazing guide!

I implemented borg and the synch to S3 works. However, I got an error message when it tried to generate the Gotify stats.

In my opinion, line 91 in your backup-borg-s3.sh should be changed to the following:
AWS_STATS=$(aws s3 ls --profile=${BORG_S3_BACKUP_AWS_PROFILE} --summarize --recursive s3://${BORG_S3_BACKUP_BUCKET} | tail -1 | awk '{ printf "%.3f GB", $3/1024/1024/1024; }')

Changing it that way should use the information provided in the .env file.

Suggestion: Add Crowdsec

Hello, I'm hoping you are open to suggestions. If so would it be possible to add Crowdsec as well? I saw on reddit you were looking into it at one point. Thank you for all the work you've done putting this together. Cheers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.