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:
46
pkg/arch/PKGBUILD
Normal file
46
pkg/arch/PKGBUILD
Normal 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"
|
||||
}
|
||||
17
pkg/arch/doh-forwarder.conf
Normal file
17
pkg/arch/doh-forwarder.conf
Normal 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
|
||||
27
pkg/arch/doh-forwarder.service
Normal file
27
pkg/arch/doh-forwarder.service
Normal 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
|
||||
2
pkg/arch/doh-forwarder.sysusers
Normal file
2
pkg/arch/doh-forwarder.sysusers
Normal file
@@ -0,0 +1,2 @@
|
||||
# Type Name ID GECOS Home Shell
|
||||
u doh-forwarder - "DoH Forwarder daemon" /var/lib/doh-forwarder -
|
||||
Reference in New Issue
Block a user