# SPDX-FileCopyrightText: 2026 Progmasoft # SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 [Unit] Description=Progmaweb account API After=network-online.target Wants=network-online.target [Service] Type=exec User=progmaweb Group=progmaweb WorkingDirectory=/srv/progmaweb/current/api # Invoke the framework-dependent deployment through the installed runtime. This # avoids relying on the copied apphost inode being executable under the host's # SELinux policy while preserving the same immutable application payload. ExecStart=/usr/bin/dotnet /srv/progmaweb/current/api/Progmaweb.Api.dll Environment=ASPNETCORE_ENVIRONMENT=Production Environment=ASPNETCORE_URLS=http://127.0.0.1:5085 EnvironmentFile=-/etc/progmaweb/account.env Restart=on-failure RestartSec=5s TimeoutStopSec=30s # The API currently has no writable application files. Runtime state belongs in external services, not in the release. NoNewPrivileges=true PrivateTmp=true ProtectHome=true ProtectSystem=strict ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true RestrictSUIDSGID=true LockPersonality=true # MemoryDenyWriteExecute is intentionally omitted: CoreCLR's JIT requires managed executable mappings at runtime. SystemCallArchitectures=native [Install] WantedBy=multi-user.target