| # ==> /etc/systemd/system/public-inbox-netd@.service <== |
| # Since SIGUSR2 upgrades do not work under systemd, this service file |
| # allows starting two simultaneous services during upgrade time |
| # (e.g. public-inbox-netd@1 public-inbox-netd@2) with the intention |
| # that they take turns running in-between upgrades. This should |
| # allow upgrading without downtime. |
| # For servers expecting visitors from multiple timezones, TZ=UTC |
| # is needed to ensure a consistent approxidate experience with search. |
| [Unit] |
| Description = public-inbox-netd server %i |
| Wants = public-inbox-netd.socket |
| After = public-inbox-netd.socket |
| |
| [Service] |
| |
| # Setting MALLOC_MMAP_THRESHOLD_=131072 reduces fragmentation by |
| # disabling the sliding mmap window in glibc malloc. For 64-bit systems, |
| # LD_PRELOAD for libjemalloc may be added here, instead. jemalloc is more |
| # resistant to fragmentation in long-lived daemons than unconfigured glibc |
| # malloc on systems with large VM space. 32-bit systems may be better |
| # off sticking with glibc and MALLOC_MMAP_THRESHOLD_. |
| Environment = PI_CONFIG=/home/pi/.public-inbox/config \ |
| PATH=/usr/local/bin:/usr/bin:/bin \ |
| TZ=UTC \ |
| MALLOC_MMAP_THRESHOLD_=131072 \ |
| PERL_INLINE_DIRECTORY=/tmp/.netd-inline |
| |
| LimitNOFILE = 30000 |
| LimitCORE = infinity |
| ExecStartPre = /bin/mkdir -p -m 1777 /tmp/.netd-inline |
| |
| # The '-l' args below map each socket in public-inbox-netd.socket to |
| # the appropriate IANA service name: |
| ExecStart = /usr/local/bin/public-inbox-netd -W0 \ |
| -1 /var/log/netd/stdout.out.log \ |
| --cert /etc/ssl/certs/news.example.com.pem \ |
| --key /etc/ssl/private/news.example.com.key |
| -l imap:///run/imap.sock?out=/var/log/netd/imap.out,err=/var/log/netd/imap.err \ |
| -l nntp:///run/nntp.sock?out=/var/log/netd/nntp.out,err=/var/log/netd/nntp.err \ |
| -l pop3:///run/pop3.sock?out=/var/log/netd/pop3.out,err=/var/log/netd/pop3.err \ |
| -l imap://0.0.0.0/?out=/var/log/netd/imap.out,err=/var/log/netd/imap.err \ |
| -l nntp://0.0.0.0/?out=/var/log/netd/nntp.out,err=/var/log/netd/nntp.err \ |
| -l pop3://0.0.0.0/?out=/var/log/netd/pop3.out,err=/var/log/netd/pop3.err \ |
| -l imap://[::]/?out=/var/log/netd/imap.out,err=/var/log/netd/imap.err \ |
| -l nntp://[::]/?out=/var/log/netd/nntp.out,err=/var/log/netd/nntp.err \ |
| -l pop3://[::]/?out=/var/log/netd/pop3.out,err=/var/log/netd/pop3.err \ |
| -l imaps://0.0.0.0/?out=/var/log/netd/imap.out,err=/var/log/netd/imap.err \ |
| -l nntps://0.0.0.0/?out=/var/log/netd/nntp.out,err=/var/log/netd/nntp.err \ |
| -l pop3s://0.0.0.0/?out=/var/log/netd/pop3.out,err=/var/log/netd/pop3.err \ |
| -l imaps://[::]/?out=/var/log/netd/imap.out,err=/var/log/netd/imap.err \ |
| -l nntps://[::]/?out=/var/log/netd/nntp.out,err=/var/log/netd/nntp.err \ |
| -l pop3s://[::]/?out=/var/log/netd/pop3.out,err=/var/log/netd/pop3.err \ |
| -l http://127.0.0.1:280/?psgi=/etc/public.psgi,err=/var/log/netd/http.err |
| |
| # NonBlocking is REQUIRED to avoid a race condition if running |
| # simultaneous services |
| NonBlocking = true |
| |
| Sockets = public-inbox-netd.socket |
| KillSignal = SIGQUIT |
| User = news |
| Group = ssl-cert |
| ExecReload = /bin/kill -HUP $MAINPID |
| TimeoutStopSec = 30 |
| KillMode = process |
| |
| [Install] |
| WantedBy = multi-user.target |