Instalação do Lacuna PSC em Ubuntu Server
Para instalar uma instância on premises do Lacuna PSC em Ubuntu Server, siga os passos abaixo. Para outras plataformas, clique aqui.
Pré-requisitos
- Ubuntu Server (qualquer versão ainda suportada pelo fabricante, recomendamos a versão LTS mais recente)
- Instância do Amplia configurada para hospedagem de certificados em nuvem
- Instância do GrantID
- Licença do PKI SDK (no formato Base64)
- Entrada de DNS criada anteriormente para o site
- Connection string para um banco de dados SQL Server ou PostgreSQL criado previamente
Instale o ASP.NET Core Runtime 6.0
Important
Essas instruções assumem que você está autenticado como root. Se você não estiver, execute sudo su -
antes de continuar!
Siga as instruções abaixo dependendo da versão do seu Ubuntu para:
- Registrar a chave da Microsoft e adicionar o repositório de pacotes (só precisa ser feito em versões anteriores à versão 22 e uma única vez por máquina)
- Instalar o pacote
aspnetcore-runtime-6.0
Ubuntu 22.04 (LTS)
apt-get update
apt-get install aspnetcore-runtime-6.0
Ubuntu 20.04 (LTS)
curl -O https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update
apt-get install aspnetcore-runtime-6.0
Ubuntu 18.04 (LTS)
curl -O https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update
apt-get install aspnetcore-runtime-6.0
Ubuntu 16.04 (LTS)
curl -O https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
apt-get update
apt-get install aspnetcore-runtime-6.0
Teste a instalação
Para testar a instalação, execute:
dotnet --list-runtimes
A saída esperada é semelhante a:
Microsoft.AspNetCore.App 6.0.* [*/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.* [*/dotnet/shared/Microsoft.NETCore.App]
Tip
Para outras versões do sistema operacional e métodos alternativos de instalação do ASP.NET Core Runtime, visite esta página
Instale dependências adicionais:
apt-get install libc6-dev libgdiplus
Instalar o Lacuna PSC
Crie um usuário local para executar o servidor de aplicação do Lacuna PSC:
mkdir /var/lacuna-psc
useradd --system --home-dir /var/lacuna-psc lacuna-psc
chown lacuna-psc:lacuna-psc /var/lacuna-psc
Crie a pasta do site, baixe e extraia os binários:
Note
Para testar a próxima versão do Lacuna PSC, atualmente em estágio Release Candidate, substitua psc-x.y.z.tar.gz
nos comandos abaixo
por psc-1.3.0-rc01.tar.gz
. Cuidado: versões Release Candidate não são adequadas para produção e, portanto, devem ser instaladas apenas em ambientes de
homologação/testes!
mkdir /usr/share/lacuna-psc
curl -O https://cdn.lacunasoftware.com/psc/psc-1.2.5.tar.gz
tar xzf psc-1.2.5.tar.gz -C /usr/share/lacuna-psc
chmod -R a=,u+rwX,go+rX /usr/share/lacuna-psc
Note
Os arquivos do site podem ser lidos por qualquer usuário mas só podem ser alterados por usuários com permissões elevadas. Isso significa que o usuário da aplicação (lacuna-psc) pode ler os arquivos mas não pode alterá-los (isso é intencional).
Crie o arquivo de configuração do Lacuna PSC a partir do template fornecido:
mkdir /etc/lacuna-psc
cp /usr/share/lacuna-psc/config-templates/linux/appsettings.conf /etc/lacuna-psc/
chown -R root:lacuna-psc /etc/lacuna-psc
chmod -R a=,u+rwX,g+rX /etc/lacuna-psc
Note
Arquivos de configuração só podem ser lidos por membros do grupo lacuna-psc e só podem ser alterados por usuários com permissões elevadas. Isso é importante para proteger informações sigilosas armazenadas no arquivo de configuração dos demais usuários da máquina.
Gere um certificado para assinar tokens de OAuth
Gere um certificado auto-assinado para assinar os tokens de OAuth emitidos pela aplicação:
dotnet /usr/share/lacuna-psc/Lacuna.Psc.Site.dll -- gen-cert "Patorum PSC" "" /etc/lacuna-psc/issuer.pfx
chown -R root:lacuna-psc /etc/lacuna-psc && chmod -R a=,u+rwX,g+rX /etc/lacuna-psc
Configure as raízes confiáveis
Edite o arquivo de definição das raízes confiáveis:
mkdir /var/lacuna-psc/trustarbitrators
touch /var/lacuna-psc/trustarbitrators/psc-trust.json
chown -R lacuna-psc:lacuna-psc /var/lacuna-psc
nano /var/lacuna-psc/trustarbitrators/psc-trust.json
Insira as raízes confiáveis conforme abaixo:
{
"Version": "2019-05-09",
"StandardPkis": [
"Brazil",
"Italy",
"Peru"
],
"TrustedRoots": [
"MIIFzDC...",
"MIIFzDC..."
]
}
- O campo
Version
deve ser mantido - A coleção
StandardPkis
pode conterBrazil
,Italy
ouPeru
denotando que as raízes desses países devem ser consideradas confiáveis - A coleção
TrustedRoots
pode conter certificados confiáveis adicionais de AC raiz em formato Base64
Warning
Este arquivo não suporta comentários
Configure o Lacuna PSC
Edite o arquivo de configuração e siga as instruções nele para configurar sua instância do Lacuna PSC:
nano /etc/lacuna-psc/appsettings.conf
Na seção [General]
, para preencher o parâmetro EncryptionKey
gere uma chave de 256 bits para cifrar dados sensíveis armazenados no banco de dados:
openssl rand -base64 32
Na seção [Amplia]
, para preencher o parâmetro ApiKey
é preciso criar uma aplicação na sua instância do Amplia
e gerar uma chave de API para a aplicação:
- Autentique-se na sua instância do Amplia
- Clique em Aplicações no menu lateral, em seguida em Adicionar
- Preencha um nome e selecione a conta na qual os certificados devem ser emitidos (não escolha o Sys Admin)
- Marque o papel Worker
- Clique em Criar
- Clique em Chaves, depois em Adicionar
- Preencha alguma descrição e, no campo Expiração, escolha "Nunca expira"
- Clique em Criar
- Copie a chave de API gerada (esse valor não pode ser recuperado posteriormente)
Siga os passos em Configuração de OpenID Connect para preencher a seção [Oidc]
.
Preencha os demais parâmetros de acordo com as instruções presentes no arquivo de configuração.
Configurar um daemon
Crie o arquivo de definição do serviço:
touch /etc/systemd/system/lacuna-psc.service
nano /etc/systemd/system/lacuna-psc.service
Digite o seguinte:
[Unit]
Description=Lacuna PSC
[Service]
WorkingDirectory=/usr/share/lacuna-psc
ExecStart=/usr/bin/dotnet Lacuna.Psc.Site.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=lacuna-psc
User=lacuna-psc
Environment=ASPNETCORE_ENVIRONMENT=Linux
Environment=ASPNETCORE_URLS=http://+:5003
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Salve o arquivo, habilite o serviço e inicie-o:
systemctl enable lacuna-psc
systemctl start lacuna-psc
systemctl status lacuna-psc
A saída esperada é semelhante a:
* lacuna-psc.service - Lacuna PSC
Loaded: loaded (/etc/systemd/system/lacuna-psc.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-07-07 05:50:04 UTC; 4min 22s ago
Main PID: 10960 (dotnet)
Tasks: 31 (limit: 2319)
CGroup: /system.slice/lacuna-psc.service
└─10960 /usr/bin/dotnet Lacuna.Psc.Site.dll
...
Dec 04 12:45:08 server.patorum.com lacuna-psc[32562]: Hosting environment: Production
Dec 04 12:45:08 server.patorum.com lacuna-psc[32562]: Content root path: /usr/share/lacuna-psc
Dec 04 12:45:08 server.patorum.com lacuna-psc[32562]: Now listening on: http://localhost:5003
Dec 04 12:45:08 server.patorum.com lacuna-psc[32562]: Application started. Press Ctrl+C to shut down.
Hint: Some lines were ellipsized, use -l to show in full.
Se necessário, reinicie o serviço: systemctl restart lacuna-psc
Para testar se o servidor do Lacuna PSC está rodando, execute:
curl http://localhost:5003/api/system/info
A saída esperada é algo como:
{"productName":"Lacuna PSC","productVersion":"...","spaVersion":"...","timestamp":"..."}
Configurar um servidor proxy reverso
Note
Se você preferir usar o Apache ao invés do Nginx, veja este artigo.
Instale o Nginx (se ainda não estiver instalado)
apt-get install nginx
Teste a instalação do Nginx:
curl -I http://localhost/
Verifique as primeiras linhas da saída, que devem ser similares a:
HTTP/1.1 200 OK
Server: nginx/...
...
Desabilite o site padrão do Nginx:
rm /etc/nginx/sites-enabled/default
Crie um arquivo de configuração para o site do Lacuna PSC:
touch /etc/nginx/sites-available/lacuna-psc
nano /etc/nginx/sites-available/lacuna-psc
Digite o seguinte, substituindo o valor do item server_name
pelo domínio do site:
server {
listen 80;
server_name psc.patorum.com;
location / {
proxy_pass http://localhost:5003;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Tip
Idealmente, a configuração do site deve conter as entradas ssl_certificate
e ssl_certificate_key
com o certificado SSL válido. Essa configuração está fora do escopo dessas
instruções.
Ative o site:
ln -sf /etc/nginx/sites-available/lacuna-psc /etc/nginx/sites-enabled/lacuna-psc
Teste a configuração do Nginx e recarregue-a:
nginx -t
nginx -s reload
Teste o site:
curl -H "Host: psc.patorum.com" http://localhost/api/system/info
Warning
Em ambientes de produção, é essencial realizar também a configuração de Firebase App Check e reCAPTCHA para proteger a API de abusos