Controle de acesso
Tokens e permissões determinam quem pode publicar e instalar seus pacotes.
A partir do dia 10 de outubro, a hostioo.cloud passa a ser hostioo.online. Atualize seus acessos, links salvos e favoritos para o novo endereço.
Publique, instale e gerencie seus pacotes NPM privados com autenticação, controle de acesso e documentação centralizada. Conte também com MySQL 8, PostgreSQL, Supabase auto-hospedado, Docker já instalado e e-mail gratuito com Roundcube.
Mantenha bibliotecas internas, componentes proprietários e outros pacotes privados disponíveis somente para usuários e equipes autorizadas.
Tokens e permissões determinam quem pode publicar e instalar seus pacotes.
Organize pacotes utilizando
namespaces como
@empresa/pacote.
Use autenticação e tokens com escopo adequado para reduzir riscos de acesso indevido.
Adicione o registry privado ao seu projeto. O exemplo abaixo utiliza um escopo específico para separar seus pacotes internos dos pacotes públicos.
# Registry dos pacotes privados
@{$npm_scope|default:"empresa"}:registry={$npm_registry|default:"https://npm.exemplo.com"}
# Token de autenticação
//npm.exemplo.com/:_authToken=${NPM_TOKEN}
Recomenda-se armazenar o token em uma variável de ambiente ou no mecanismo de secrets do seu CI/CD.
# Exemplo
export NPM_TOKEN="seu-token-aqui"
npm whoami --registry={$npm_registry|default:"https://npm.exemplo.com"}
Em seu package.json, utilize um
nome com escopo para identificar o pacote.
{
"name": "@{$npm_scope|default:"empresa"}/meu-pacote",
"version": "1.0.0",
"private": false
}
npm publish --access restricted
npm install @{$npm_scope|default:"empresa"}/meu-pacote
A hospedagem Hostioo disponibiliza MySQL 8 e PostgreSQL prontos para uso nas suas aplicações. Além desses bancos gerenciados, você pode instalar o Supabase auto-hospedado no seu servidor e utilizar a plataforma normalmente, com Auth, Storage, Realtime e APIs geradas automaticamente.
Compatível com a maioria dos CMS, frameworks PHP e aplicações legadas. Porta padrão {$db_mysql_port|default:"3306"}.
Indicado para sistemas com maior volume de dados e consultas analíticas. Porta padrão {$db_pgsql_port|default:"5432"}.
Plataforma completa auto-hospedada no seu servidor, com PostgreSQL por baixo.
| Motor | Porta | Acesso | Ferramenta sugerida |
|---|---|---|---|
MySQL 8
|
{$db_mysql_port|default:"3306"} | localhost | phpMyAdmin |
PostgreSQL
|
{$db_pgsql_port|default:"5432"} | localhost | pgAdmin |
Supabase
|
{$db_supabase_api_port|default:"8000"} | {$db_supabase_host|default:"app.seudominio.com"} | Painel do Supabase |
Crie um banco e um usuário
dedicados para cada aplicação.
Isso evita o uso de
root nas conexões da
aplicação.
# Acessa o servidor de banco
mysql -u root -p
# Cria o banco com acentuação completa
CREATE DATABASE app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Cria o usuário e aplica as permissões
CREATE USER 'app'@'localhost' IDENTIFIED BY 'senha-forte';
GRANT ALL PRIVILEGES ON app.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
# Acessa o servidor de banco
sudo -u postgres psql
# Cria o banco e o usuário
CREATE DATABASE app;
CREATE USER app WITH PASSWORD 'senha-forte';
GRANT ALL PRIVILEGES ON DATABASE app TO app;
\q
# Testa a conexão com o novo usuário
psql -U app -d app -W
O host
{$db_host|default:"localhost"}
deve ser usado quando o PHP, o Node
ou o container da aplicação rodam
no mesmo servidor da hospedagem.
# MySQL 8
DB_CONNECTION=mysql
DB_HOST={$db_host|default:"localhost"}
DB_PORT={$db_mysql_port|default:"3306"}
DB_DATABASE=app
DB_USERNAME=app
DB_PASSWORD=senha-forte
# PostgreSQL
DB_CONNECTION=pgsql
DB_HOST={$db_host|default:"localhost"}
DB_PORT={$db_pgsql_port|default:"5432"}
DB_DATABASE=app
DB_USERNAME=app
DB_PASSWORD=senha-forte
<?php
// Conexão com MySQL 8
$pdo = new PDO(
'mysql:host=' . getenv('DB_HOST') . ';port=' . getenv('DB_PORT') . ';dbname=' . getenv('DB_DATABASE'),
getenv('DB_USERNAME'),
getenv('DB_PASSWORD'),
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
// Conexão com PostgreSQL
$pdo = new PDO(
'pgsql:host=' . getenv('DB_HOST') . ';port=' . getenv('DB_PORT') . ';dbname=' . getenv('DB_DATABASE'),
getenv('DB_USERNAME'),
getenv('DB_PASSWORD'),
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
Para consultar, criar e restaurar
bancos, você pode usar as ferramentas
instaladas na hospedagem ou o
mysql e o
psql diretamente por
SSH.
Use o phpMyAdmin para o MySQL 8 e o pgAdmin para o PostgreSQL. Ambos podem ser acessados pelo painel da hospedagem, sem instalar nada localmente.
Para rotinas de
importação, exportação e
backup, prefira
mysqldump,
pg_dump e
psql por SSH,
que são mais rápidos em
bases grandes.
O Supabase pode ser instalado na
própria hospedagem usando Docker.
Depois da instalação, a plataforma é
utilizada normalmente: mesmo SDK
JavaScript, mesmo painel de
administração, mesmas
auth,
storage,
realtime e APIs
automáticas da versão cloud.
# 1. Repositório oficial do Supabase
git clone --depth 1 https://github.com/supabase/supabase.git
cd supabase/docker
# 2. Arquivo de configuração
cp .env.example .env
# 3. Sobe os containers
docker compose up -d
# 4. Acompanha o estado dos serviços
docker compose ps
# Domínio do projeto (HTTPS é obrigatório)
DOMAIN=app.seudominio.com
API_EXTERNAL_URL=https://app.seudominio.com
# Banco de dados do Supabase
POSTGRES_DB=supabase
POSTGRES_PASSWORD=senha-forte
# Segurança: gere valores longos e aleatórios
JWT_SECRET=segredo-longo-e-aleatorio
ANON_KEY=chave-publica-gerada
SERVICE_ROLE_KEY=chave-privada-gerada
# Depois de editar, recrie apenas o que mudou
docker compose up -d
SUPABASE_URL=https://{$db_supabase_host|default:"app.seudominio.com"}
SUPABASE_ANON_KEY=chave-publica-gerada
SUPABASE_SERVICE_ROLE_KEY=chave-privada-gerada
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
const { data, error } = await supabase
.from('clientes')
.select('*');
.env e backups de
banco não devem ser enviados ao
Git. Verifique o
.gitignore do projeto e
mantenha as senhas em variáveis de
ambiente.
O Docker já vem instalado e
configurado na hospedagem Hostioo.
Basta publicar a sua aplicação em
um Dockerfile ou em um
docker-compose.yml que
o ambiente é construído, publicado
e mantido automaticamente, sem
precisar instalar nada no servidor.
Docker Engine e Docker Compose já estão disponíveis por SSH, sem custo adicional de instalação.
Publique a aplicação com
compose up e
atualize com um novo
pull.
Containers conversam com MySQL 8, PostgreSQL e Supabase da própria hospedagem.
{$docker_host|default:"localhost"}
para conectar a bancos de dados e
serviços que não estão no mesmo
container.
Acesse o servidor por SSH e confirme a versão instalada e os containers em execução.
# Versão do Docker Engine
docker --version
# Versão do Compose
docker compose version
# Containers ativos
docker ps
# Occupying: imagens baixadas
docker images
Crie um Dockerfile na
raiz do projeto com a imagem da sua
aplicação.
FROM node:22-alpine
WORKDIR /app
# Dependências em camada separada
COPY package*.json ./
RUN npm ci --omit=dev
# Código da aplicação
COPY . .
EXPOSE {$docker_app_port|default:"3000"}
CMD ["npm", "start"]
O Compose sobe a aplicação junto de serviços auxiliares, como cache e filas de mensagens.
services:
app:
build: .
restart: unless-stopped
env_file: .env
ports:
- "127.0.0.1:{$docker_app_port|default:"3000"}:3000"
cache:
image: redis:7-alpine
restart: unless-stopped
ports:
- "127.0.0.1:6379:6379"
# Constrói e sobe em segundo plano
docker compose up -d --build
# Acompanha os logs da aplicação
docker compose logs -f app
# Reinicia somente um serviço
docker compose restart app
# Interrompe os containers
docker compose down
# Baixa a versão mais recente da imagem
git pull
# Constrói a nova versão e troca o container
docker compose up -d --build
# Remove imagens antigas sem uso
docker image prune -f
O Apache publica o site em
{$docker_host|default:"localhost"}.
Publique a porta do container com um
proxy reverso, mantendo a aplicação
sem porta aberta para a internet.
<VirtualHost *:80 >
ServerName app.seudominio.com
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://127.0.0.1:{$docker_app_port|default:"3000"}/ retry=0
ProxyPassReverse / http://127.0.0.1:{$docker_app_port|default:"3000"}/
ErrorLog logs/app-error.log
CustomLog logs/app-access.log combined
</VirtualHost>
env_file ou
--env-file, e
mantenha esses arquivos
fora do Git.
docker stats e
docker system df
antes de publicar novos
serviços.
Toda hospedagem Hostioo já inclui contas de e-mail gratuitas com Roundcube, o webmail mais utilizado do mercado. Você cria a caixa, usa o mesmo endereço no Outlook, no celular e em qualquer aplicativo de e-mail.
Envie, responda e organize mensagens pelo navegador, sem configurar nenhum aplicativo.
Configure o mesmo endereço no Outlook, no celular ou em qualquer cliente compatível com IMAP.
Envie arquivos com limite de tamanho definido no plano e filtros de proteção antispam.
Depois que o domínio estiver apontado para a hospedagem, crie a caixa pelo painel e acesse o Roundcube.
# Webmail
{$email_webmail_url|default:"https://webmail.seudominio.com"}
# Endereço completo da caixa
contato@{$email_domain|default:"seudominio.com"}
| Protocolo | Servidor | Porta | SSL/TLS |
|---|---|---|---|
IMAP
|
mail.seudominio.com | {$email_imap_port|default:"993"} | Necessário |
POP3
|
mail.seudominio.com | {$email_pop3_port|default:"995"} | Necessário |
SMTP
|
mail.seudominio.com | {$email_smtp_port|default:"587"} | STARTTLS |
Use sempre a porta
{$email_imap_port|default:"993"}
com SSL/TLS no IMAP. É a configuração
mais segura e a que evita que a
senha da caixa seja commitada no
aparelho.
Servidor de entrada: mail.seudominio.com
Porta: {$email_imap_port|default:"993"}
Criptografia: SSL/TLS
Servidor de saída: mail.seudominio.com
Porta: {$email_smtp_port|default:"587"}
Criptografia: STARTTLS
Usuário: contato@seudominio.com
Senha: a senha da caixa
Tipo: IMAP
Servidor: mail.seudominio.com
Porta: {$email_imap_port|default:"993"}
Segurança: SSL/TLS
Usuário: contato@seudominio.com
Senha: a senha da caixa
O envio deve ser feito por SMTP
autenticado, com o mesmo usuário e
senha da caixa. Nunca use o
mail() do PHP, que
não é suportado na hospedagem.
MAIL_TRANSPORT=smtp
MAIL_HOST=mail.seudominio.com
MAIL_PORT={$email_smtp_port|default:"587"}
MAIL_USERNAME=contato@{$email_domain|default:"seudominio.com"}
MAIL_PASSWORD=a senha da caixa
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=contato@{$email_domain|default:"seudominio.com"}
<?php
return [
'transport' => 'smtp',
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'encryption' => 'tls',
];
O envio e o recebimento dependem dos registros abaixo. Depois de configurá-los, aguarde a propagação e verifique a caixa no Roundcube.
# Recebimento de mensagens
seudominio.com. MX mail.seudominio.com.
seudominio.com. A {$db_ip|default:"SEU-IP"}
# Envio sem cair no spam
seudominio.com. TXT "v=spf1 a mx ~all"
seudominio.com. TXT "v=DKIM1; k=rsa; p=CHAVE-PUBLICA"
seudominio.com. TXT "v=DMARC1; p=none"
Transparência sobre os dados processados, segurança da plataforma, confidencialidade do código e responsabilidades dos usuários.
Podemos processar dados necessários para autenticação, operação da conta, suporte, segurança, cobrança quando aplicável e funcionamento dos serviços contratados.
A plataforma deve aplicar controles técnicos e administrativos apropriados para proteger informações contra acesso, alteração, divulgação ou destruição não autorizados, considerando a natureza dos dados tratados.
O código, pacotes, bibliotecas e demais materiais enviados pelo cliente permanecem sujeitos aos direitos e licenças aplicáveis definidos entre as partes. O acesso pela plataforma é limitado às finalidades necessárias para prestação do serviço.
Dados podem ser mantidos pelo período necessário para cumprir as finalidades informadas, obrigações legais, resolução de disputas e proteção dos direitos das partes. Os prazos específicos devem constar na política de retenção aplicável.
Quando aplicáveis ao tratamento realizado, a plataforma deverá observar os requisitos pertinentes da legislação de proteção de dados, incluindo princípios de transparência, finalidade, segurança e exercício dos direitos dos titulares.
O cliente deve utilizar a plataforma de acordo com a legislação aplicável, os contratos vigentes e as políticas da plataforma. É proibido utilizar o serviço para obter acesso não autorizado, distribuir conteúdo ilícito ou comprometer a segurança de terceiros.
Encontre rapidamente instruções e respostas para as dúvidas mais comuns.
Tente utilizar outros termos de busca.