diff --git a/wg-easy/readme.md b/wg-easy/readme.md
index 90dc28e..d6cc0f9 100644
--- a/wg-easy/readme.md
+++ b/wg-easy/readme.md
@@ -23,11 +23,9 @@ Written in javascript.
└── docker/
└── wg-easy/
├── 🗁 wireguard_data/
- ├── 🗋 .env
└── 🗋 docker-compose.yml
```
* `wireguard_data/` - a directory with wireguard config files
-* `.env` - a file containing environment variables for docker compose
* `docker-compose.yml` - a docker compose file, telling docker how to run the container
# Compose
@@ -37,62 +35,50 @@ Written in javascript.
services:
wg-easy:
- image: ghcr.io/wg-easy/wg-easy:14
+ image: ghcr.io/wg-easy/wg-easy:15.4
container_name: wg-easy
hostname: wg-easy
restart: unless-stopped
- env_file: .env
volumes:
- ./wireguard_data:/etc/wireguard
+ - /lib/modules:/lib/modules:ro
ports:
- "51820:51820/udp" # vpn traffic
- - "51821:51821" # web interface
+ expose:
+ - "51821" # web interface
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
+ environment:
+ - INSECURE=true
+ - DISABLE_IPV6=true
+ # unattended setup on first run
+ - INIT_ENABLED=true
+ - INIT_USERNAME=myspecialadmin
+ - INIT_PASSWORD=mysecretpasswordthatislong12charAtleast
+ - INIT_HOST=vpn.example.com
+ - INIT_PORT=51820
+ - INIT_DNS=
+ - INIT_ALLOWED_IPS=192.168.1.0/24
networks:
default:
- name: $DOCKER_MY_NETWORK
+ name: caddy_net
external: true
```
-`.env`
-```bash
-# GENERAL
-DOCKER_MY_NETWORK=caddy_net
-TZ=Europe/Bratislava
-
-#WG-EASY
-WG_HOST=vpn.example.com # can also be just public IP
-# PASSWORD=supersecretpassword
-PASSWORD_HASH=$$2a$$12$$52a84HoSf99aLL7lmt9NsO0hlhZmGuJnyBK.bToiSdbQhTvMjV3ce
-WG_PORT=51820
-WG_DEFAULT_ADDRESS=10.221.221.x
-WG_ALLOWED_IPS=192.168.1.0/24
-WG_DEFAULT_DNS=
-```
-
-In version 14 `PASSWORD` as env variable is no longer allowed
-and `PASSWORD_HASH` must be used.
-It is [a bcrypt hash](https://github.com/wg-easy/wg-easy/blob/master/How_to_generate_an_bcrypt_hash.md)
-of the password and in compose it must be without quotation marks
-and any `$` symbol needs to be doubled - replaced with `$$`.
-
-DNS is set to null as I had issues with it set, but it should be tried,
-set it to ip address where at port 53 dns server answers. Test then with nslookup.
-
# Reverse proxy
-Caddy v2 is used, details
-[here](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2).
+Caddy is used, that's why the web interface port is just exposed and not mapped
+and why the insecure is set to true for just http.
+Details [here](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/caddy_v2).
`Caddyfile`
```php
-vpn.{$MY_DOMAIN} {
+vpn.example.com {
reverse_proxy wg-easy:51821
}
```
@@ -101,11 +87,17 @@ vpn.{$MY_DOMAIN} {

-Login with the password from the .env file.
-Add user, download config, use it.
+If you need to import old config, you need to change env variable `INIT_ENABLED=false`
+It then guides you through setup and one of the steps is import of old config.
# Trouble shooting
+Make sure you forward udp port `51820`.
+
+# Site-to-Site
+
+[https://www.procustodibus.com/blog/2020/12/wireguard-site-to-site-config/](https://www.procustodibus.com/blog/2020/12/wireguard-site-to-site-config/)
+
# Update
Manual image update:
@@ -114,3 +106,6 @@ Manual image update:
- `docker compose up -d`
- `docker image prune`
+# Alternative
+
+[netbird](https://github.com/netbirdio/netbird)