[Unit] Description=Bridge&Join — шлюз, объединяющий системы финансовой организации Documentation=https://git.zetit.ru/zuevav/Bridge-and-Join-s After=network-online.target postgresql.service Wants=network-online.target [Service] Type=simple User=bj Group=bj WorkingDirectory=/opt/bj ExecStart=/opt/bj/bj-server Restart=on-failure RestartSec=5 # Конфигурация — через ENV или ~/.bj/setup.json (UI /admin/setup). Environment=BJ_HTTP_ADDR=:8080 Environment=BJ_SETUP_PATH=/var/lib/bj/.bj/setup.json # КриптоПро CSP кладёт .so в /opt/cprocsp/lib/amd64 без записи в # /etc/ld.so.conf.d. Чтобы Go-PKCS#11 клиент (cryptocli) нашёл # libcppkcs11.so и его зависимости (libcapi20, libcpext, liburlretrieve), # подмешиваем путь через LD_LIBRARY_PATH. Без этого Initialize() падает # с CKR_FUNCTION_FAILED или 'cannot open shared object file'. Environment=LD_LIBRARY_PATH=/opt/cprocsp/lib/amd64 # Безопасность. NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true # /run/bj — общий каталог с bj-crypto (сокет); на чистой установке его создаёт сама служба RuntimeDirectory=bj RuntimeDirectoryMode=0750 RuntimeDirectoryPreserve=yes ReadWritePaths=/var/lib/bj /var/log/bj /run/bj StandardOutput=append:/var/log/bj/bj-server.log StandardError=append:/var/log/bj/bj-server.err ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true RestrictSUIDSGID=true LockPersonality=true # Лимиты. LimitNOFILE=65536 TasksMax=512 [Install] WantedBy=multi-user.target