最終更新 1 month ago

修正履歴 63c1a2601e3328d32521ded0ac9c07656520c78d

gistfile1.txt Raw
1#!/usr/bin/env bash
2set -e
3
4WGCTL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5DATA_DIR="/etc/wireguard/.wgctl"
6
7echo "Installing wgctl..."
8
9install::dependencies
10install::make_structure
11install::daemon_logs
12install::symlink
13install::wgctl_service
14install_ulogd
15install::create_config
16
17echo "wgctl installed successfully!"
18
19function install::symlink() {
20 ln -sf /etc/wireguard/wgctl/wgctl /usr/local/bin/wgctl
21}
22
23function install::dependencies() {
24 apt install -y wireguard ulogd2 ulogd2-json python3 qrencode
25}
26
27function install::make_structure() {
28 mkdir -p "${DATA_DIR}"/{rules,groups,blocks,meta,daemon}
29}
30
31function install::daemon_logs() {
32 touch "${DATA_DIR}/daemon/fw_events.log"
33 chown ulog:ulog "${DATA_DIR}/daemon/fw_events.log"
34
35 echo '{}' > "${DATA_DIR}/daemon/watchlist.json"
36 echo '{}' > "${DATA_DIR}/daemon/endpoint_cache.json"
37}
38
39function install::wgctl_service() {
40 # Install systemd service
41 cp "${WGCTL_DIR}/install/wgctl-monitor.service" /etc/systemd/system/
42 systemctl daemon-reload
43 systemctl enable wgctl-monitor
44 systemctl start wgctl-monitor
45}
46
47function install::ulogd() {
48 # Install ulogd config
49 cp "${WGCTL_DIR}/install/ulogd.conf" /etc/ulogd.conf
50 systemctl restart ulogd2
51}
52
53function install::create_config() {
54 if [[ ! -f "${DATA_DIR}/wgctl.conf" ]]; then
55 install::create_example_config
56 cp "${WGCTL_DIR}/install/wgctl.conf.example" "${DATA_DIR}/wgctl.conf"
57 echo " Created ${DATA_DIR}/wgctl.conf — edit with your settings"
58 fi
59}
60
61function install::create_example_config() {
62cat > /etc/wireguard/wgctl/install/wgctl.conf.example << 'EOF'
63# wgctl configuration
64# Copy to /etc/wireguard/.wgctl/wgctl.conf and edit
65
66WG_INTERFACE=wg0
67WG_ENDPOINT=wg.yourdomain.com:51820
68WG_DNS=10.0.0.103
69WG_LISTEN_PORT=51820
70WG_SUBNET=10.1.0.0/16
71WG_LAN=10.0.0.0/24
72EOF
73}