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