Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Docker Pi Hole | 6,523 | 16 days ago | 29 | Shell | ||||||
Pi-hole in a docker container | ||||||||||
App | 3,749 | 2 days ago | 117 | agpl-3.0 | Python | |||||
The SimpleLogin back-end | ||||||||||
Gluetun | 3,722 | 19 hours ago | 51 | April 25, 2021 | 138 | mit | Go | |||
VPN client in a thin Docker container for multiple VPN providers, written in Go, and using OpenVPN or Wireguard, DNS over TLS, with a few proxy servers built-in. | ||||||||||
Netflix Proxy | 3,523 | 25 days ago | 6 | mit | Python | |||||
Smart DNS proxy to watch Netflix | ||||||||||
Opendevops | 3,367 | 3 months ago | 67 | gpl-3.0 | Python | |||||
CODO是一款为用户提供企业多混合云、一站式DevOps、自动化运维、完全开源的云管理平台、自动化运维平台 | ||||||||||
Wirehole | 3,040 | 4 months ago | 41 | |||||||
WireHole is a combination of WireGuard, Pi-hole, and Unbound in a docker-compose project with the intent of enabling users to quickly and easily create a personally managed full or split-tunnel WireGuard VPN with ad blocking capabilities thanks to Pi-hole, and DNS caching, additional privacy options, and upstream providers via Unbound. | ||||||||||
Play With Docker | 2,488 | 3 months ago | 10 | September 07, 2021 | 78 | mit | JavaScript | |||
You know it, you use it, now it's time to improve it. PWD!. | ||||||||||
Dinghy | 2,074 | 4 years ago | 1 | August 08, 2018 | 26 | mit | Ruby | |||
faster, friendlier Docker on OS X | ||||||||||
Nextcloudpi | 2,034 | 17 hours ago | 126 | Shell | ||||||
📦 Build code for NextcloudPi: Raspberry Pi, Odroid, Rock64, Docker, curl installer... | ||||||||||
Cloudflare Ddns | 1,763 | 3 days ago | 12 | gpl-3.0 | Python | |||||
🎉🌩️ Dynamic DNS (DDNS) service based on Cloudflare! Access your home network remotely via a custom domain name without a static IP! |
with docker-compose and traefik
This repo contains my production docker services accessible from anywhere over HTTPS using traefik. These services (and others) run on a single server. It used to be rootless-mode but slirp4net was too slow and too much of the docker advanced configuration (permissions flags, mostly) were missing.
I've also written some intermediate to advanced generic usage docs for traefik, docker, pihole, and home networking. These articles are generally applicable, but some may be more useful than others.
More great documentation.
Docker CE
installed (see below)ifconfig
will list your interfaces.UPDATE: This is now done automatically with Docker Traefik Cloudflare Companion. Instructions below are left as an explanation of how this works.
In this setup, each container's service will serve from a different subdomain of your Cloudflare hosted zone dyndns subdomain.
A
record for core.mydomain.com
to point to your public IP.service.mydomain.com
to point to core.mydomain.com
because all of your services are running on the same host but the host needs to be able to do virtual host routing based on domain name.https://servicename.mydomain.com
.Resolving the IP address of your home network is annoying because most DNS providers change your IP every now and again. Services like No-IP combat this, but they aren't the most reliable. However, setting DNS programatically is pretty easy with Cloudflare API.
.env
with your domain info, ACME email, and cloudflare API tokens.UsePAM yes
is set in /etc/ssh/sshd_config
read more
cd selfhosted
cp .env.example .env # edit this
# make mount points
mkdir /media/local /media/primary /media/secondary
# install mounts
systemctl link media-primary.mount
systemctl link media-secondary.mount
# install logrotate
systenctl --user link $HOME/selfhosted/logrotate.timer
systenctl --user link $HOME/selfhosted/logrotate.service
systemctl --user enable logrotate.timer --now
# enable traefik logrotate
cp etc/traefik-logrotate.conf /etc/logrotate.d/traefik
# Add to .profile
# export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
nano .profile
Set up docker daemon.json. Otherwise, you may end up with subnet ranges inside your containers that overlap with the real LAN and make hosts unreachable.
{
"default-address-pools": [
{"base":"172.16.0.0/16","size":24},
{"base":"172.20.0.0/16","size":24}
]
}
Edit /lib/systemd/system/[email protected]
to include dependencies on mounts
[Unit]
[email protected]%i.service media-primary.mount media-secondary.mount
ssh_key
, ssh_host
, ssh_user
for your deploy user.drone.yourdomain.com
and finish configuring your repo.You may need to disable ubuntu's default dns service and remove resolf.conf read more.
After disabling systemd-resolved.service
, I ususally set a different DNS server in /etc/resolv.conf
so that DNS doesn't break when I screw up the stack.
systemd-resolve --help
is your friend.
use wg-quick
for simplicity
May need to install or symlink resolvconf
Need to avoid overlapping subnets.
Set MTU down to 1280 for issues with cellular networks, on BOTH sides of the connection.
My subnet is 192.168.48.0/20
The mask is 255.255.240.0
The default LAN will be 192.168.52.0
The gateway is 192.168.52.1
Gateway: 11000000.10101000.0011 | 0100.00000001
Mask: 11111111.11111111.1111 | 0000.00000000
Using wireguard:
sudo systemctl enable [email protected] --now
I have aliases wgup
and wgdown
for this in my .bashrc
.
Some references I encountered while rolling out ipv6.
SYS_MODULE
capability doesn't seemt to do it. issuing an ip6tables
dummy rule workedno-dns
in interface
config for rdnss
wireguard4.domain.com
to force ipv4.# set own IP, delete set
ifconfig eth0 192.168.1.5 netmask 255.255.255.0 up
ifconfig en1 delete 192.168.1.5