diff --git a/docs/systemd.md b/docs/systemd.md new file mode 100644 index 0000000..ae14eb3 --- /dev/null +++ b/docs/systemd.md @@ -0,0 +1,37 @@ +# Docker + OpenVPN systemd Service + +The systemd service aims to make the update and invocation of the +`docker-openvpn` container seamless. It automatically downloads the latest +`docker-openvpn` image and instantiates a Docker container with that image. At +shutdown it cleans-up the old container. + +In the event the service dies (crashes, or is killed) systemd will attempt to +restart the service every 10 seconds until the service is stopped with +`systemctl stop docker-openvpn@NAME.service`. + +A number of IPv6 hacks are incorporated to workaround Docker shortcomings and +are harmless for those not using IPv6. + +To use and enable automatic start by systemd: + +1. Create a Docker volume container named `ovpn-data-NAME` where `NAME` is the + user's choice to describe the use of the container. In the example + configuration given in the [README](/README.md) `NAME=data`. +2. Initialize the data container according to the [docker-openvpn + README](/README.md), but don't start the container. Stop the Docker + container if started. +3. Download the [docker-openvpn@.service](https://raw.githubusercontent.com/kylemanna/docker-openvpn/master/init/docker-openvpn%40.service) + file to `/etc/systemd/system`: + + curl -L https://raw.githubusercontent.com/kylemanna/docker-openvpn/master/init/docker-openvpn%40.service | sudo tee /etc/systemd/system/docker-openvpn@.service + +4. Enable and start the service with: + + systemctl enable --now docker-openvpn@NAME.service + +5. Verify service start-up with: + + systemctl status docker-openvpn@NAME.service + journalctl --unit docker-openvpn@NAME.service + +For more information, see the [systemd manual pages](https://www.freedesktop.org/software/systemd/man/index.html). diff --git a/init/docker-openvpn@.service b/init/docker-openvpn@.service index 31925fb..19f7e46 100644 --- a/init/docker-openvpn@.service +++ b/init/docker-openvpn@.service @@ -1,3 +1,35 @@ +# +# Docker + OpenVPN systemd service +# +# Author: Kyle Manna +# Source: https://github.com/kylemanna/docker-openvpn +# +# This service aims to make the update and invocation of the docker-openvpn +# container seemless. It automatically downloads the latest docker-openvpn +# image and instantiates a Docker container with that image. At shutdown it +# cleans-up the old container. +# +# In the event the service dies (crashes, or is killed) systemd will attempt +# to restart the service every 10 seconds until the service is stopped with +# `systemctl stop docker-openvpn@NAME`. +# +# A number of IPv6 hacks are incorporated to workaround Docker shortcomings and +# are harmless for those not using IPv6. +# +# To use: +# 1. Create a Docker volume container named `ovpn-data-NAME` where NAME is the +# user's choice to describe the use of the container. +# 2. Initialize the data container according to the docker-openvpn README, but +# don't start the container. Stop the docker container if started. +# 3. Download this service file to /etc/systemd/service/docker-openvpn@.service +# 4. Enable and start the service template with: +# `systemctl enable --now docker-openvpn@NAME.service` +# 5. Verify service start-up with: +# `systemctl status docker-openvpn@NAME.service` +# `journalctl --unit docker-openvpn@NAME.service` +# +# For more information, see the systemd manual pages. +# [Unit] Description=OpenVPN Docker Container Documentation=https://github.com/kylemanna/docker-openvpn