feat: add Arch Linux package (PKGBUILD, systemd service, sysusers)

- PKGBUILD for building the package
- Systemd service with CAP_NET_BIND_SERVICE for port 53
- sysusers.d config to create doh-forwarder system user
- Default config at /etc/doh-forwarder/config.toml
This commit is contained in:
2026-07-06 18:46:47 +03:30
parent 65acc836d0
commit 4c62b1436a
4 changed files with 92 additions and 0 deletions

46
pkg/arch/PKGBUILD Normal file
View File

@@ -0,0 +1,46 @@
# Maintainer: Mohammadreza Khani <mohamadreza.khani@proton.me>
pkgname=doh-forwarder
pkgver=0.1.0
pkgrel=1
pkgdesc="A lightweight DNS-over-HTTPS forwarder"
arch=('x86_64')
url="https://gitea.logi.camp/LogiCrew/doh-forwarder"
license=('MIT')
depends=('gcc-libs')
makedepends=('rust' 'cargo')
backup=('etc/doh-forwarder/config.toml')
source=("$pkgname-$pkgver.tar.gz::https://git.logicamp.dev/LogiCrew/doh-forwarder/archive/v${pkgver}.tar.gz"
'doh-forwarder.service'
'doh-forwarder.sysusers'
'doh-forwarder.conf')
sha256sums=('SKIP'
'SKIP'
'SKIP'
'SKIP')
build() {
cd "$pkgname"
cargo build --release --locked
}
check() {
cd "$pkgname"
cargo test --release --locked
}
package() {
cd "$pkgname"
# Binary
install -Dm755 "target/release/doh-forwarder" "$pkgdir/usr/bin/doh-forwarder"
# Config
install -Dm644 "$srcdir/doh-forwarder.conf" "$pkgdir/etc/doh-forwarder/config.toml"
# Systemd
install -Dm644 "$srcdir/doh-forwarder.service" "$pkgdir/usr/lib/systemd/system/doh-forwarder.service"
install -Dm644 "$srcdir/doh-forwarder.sysusers" "$pkgdir/usr/lib/sysusers.d/doh-forwarder.conf"
# License
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

View File

@@ -0,0 +1,17 @@
[server]
listen = "0.0.0.0:8800"
[dns]
listen = "0.0.0.0:53"
[upstream]
resolvers = [
{ name = "cloudflare", url = "https://cloudflare-dns.com/dns-query" },
{ name = "google", url = "https://dns.google/dns-query" },
]
strategy = "round-robin"
[cache]
enabled = true
max_entries = 10000
max_ttl_secs = 3600

View File

@@ -0,0 +1,27 @@
[Unit]
Description=DoH Forwarder - DNS-over-HTTPS forwarder
Documentation=https://gitea.logi.camp/LogiCrew/doh-forwarder
After=network.target
[Service]
Type=simple
User=doh-forwarder
Group=doh-forwarder
ExecStart=/usr/bin/doh-forwarder --config /etc/doh-forwarder/config.toml
Restart=on-failure
RestartSec=5
# Allow binding to port 53 without root
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
# Security hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ReadWritePaths=/var/lib/doh-forwarder
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,2 @@
# Type Name ID GECOS Home Shell
u doh-forwarder - "DoH Forwarder daemon" /var/lib/doh-forwarder -