Aviso importante hostioo.cloud hostioo.online

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.

Em Breve
{$page_title|default:"Gestão de NPM Privado e Segurança"}
Infraestrutura segura para seus pacotes privados

Gestão de Docs Privado e Segurança

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.

NPM PRIVADO

Repositórios NPM Privados

Mantenha bibliotecas internas, componentes proprietários e outros pacotes privados disponíveis somente para usuários e equipes autorizadas.

Controle de acesso

Tokens e permissões determinam quem pode publicar e instalar seus pacotes.

Escopos

Organize pacotes utilizando namespaces como @empresa/pacote.

Segurança

Use autenticação e tokens com escopo adequado para reduzir riscos de acesso indevido.

1. Configure o registro privado

Adicione o registry privado ao seu projeto. O exemplo abaixo utiliza um escopo específico para separar seus pacotes internos dos pacotes públicos.

.npmrc
# 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}
Importante: nunca coloque tokens diretamente no código-fonte ou faça commit de credenciais no Git.

2. Configure o token de acesso

Recomenda-se armazenar o token em uma variável de ambiente ou no mecanismo de secrets do seu CI/CD.

Terminal
# Exemplo
export NPM_TOKEN="seu-token-aqui"

npm whoami --registry={$npm_registry|default:"https://npm.exemplo.com"}

3. Publique um pacote privado

Em seu package.json, utilize um nome com escopo para identificar o pacote.

package.json
{
  "name": "@{$npm_scope|default:"empresa"}/meu-pacote",
  "version": "1.0.0",
  "private": false
}
Terminal
npm publish --access restricted

4. Instale o pacote

Terminal
npm install @{$npm_scope|default:"empresa"}/meu-pacote

Práticas recomendadas de segurança

Use tokens dedicados
Evite compartilhar credenciais pessoais entre projetos e pipelines.
Faça rotação periódica
Revogue tokens que não são mais necessários e substitua credenciais periodicamente.
Proteja seu repositório
Não versionar arquivos contendo credenciais é uma camada básica de proteção.
BANCO DE DADOS

MySQL 8, PostgreSQL e Supabase

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.

MySQL 8

Compatível com a maioria dos CMS, frameworks PHP e aplicações legadas. Porta padrão {$db_mysql_port|default:"3306"}.

PostgreSQL

Indicado para sistemas com maior volume de dados e consultas analíticas. Porta padrão {$db_pgsql_port|default:"5432"}.

Supabase

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
Os dois motores podem ser usados simultaneamente. Cada banco possui seu próprio usuário e senha, e ambos podem ser aplicados a sites, APIs e tarefas agendadas no mesmo plano.

1. Crie o banco e o usuário

Crie um banco e um usuário dedicados para cada aplicação. Isso evita o uso de root nas conexões da aplicação.

MySQL 8
# 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;
PostgreSQL
# 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

2. Conecte a aplicação

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.

.env
# 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
database.php (PDO)
<?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]
);

3. Administre os dados

Para consultar, criar e restaurar bancos, você pode usar as ferramentas instaladas na hospedagem ou o mysql e o psql diretamente por SSH.

Ferramenta web

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.

Linha de comando

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.

4. Instale o Supabase auto-hospedado

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.

Terminal
# 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
.env
# 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
.env do seu projeto
SUPABASE_URL=https://{$db_supabase_host|default:"app.seudominio.com"}
SUPABASE_ANON_KEY=chave-publica-gerada
SUPABASE_SERVICE_ROLE_KEY=chave-privada-gerada
src/lib/supabase.ts
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('*');

Práticas recomendadas

Proteja o painel com HTTPS
Publique o Supabase em um domínio com certificado válido. Nunca utilize o painel apenas por HTTP aberto.
Trate a SERVICE_ROLE_KEY como segredo
Use a chave anônima no frontend e reserve a chave de serviço para o backend. Nunca a exponha no JavaScript do navegador.
Use o pooler de conexões
Para aplicações com muitas requisições, conecte pela porta do pooler (Supavisor) em vez da conexão direta, evitando o esgotamento de conexões do PostgreSQL.
Mantenha backups automáticos
Agende dumps de MySQL, PostgreSQL e do volume do Supabase para storage externo e teste periodicamente a restauração.
Atenção: arquivos .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.
DOCKER

Docker já instalado na hospedagem

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.

Já instalado

Docker Engine e Docker Compose já estão disponíveis por SSH, sem custo adicional de instalação.

Deploy contínuo

Publique a aplicação com compose up e atualize com um novo pull.

Integra com os bancos

Containers conversam com MySQL 8, PostgreSQL e Supabase da própria hospedagem.

Containers rodam de forma isolada do restante da hospedagem. Use o host {$docker_host|default:"localhost"} para conectar a bancos de dados e serviços que não estão no mesmo container.

1. Verifique o ambiente

Acesse o servidor por SSH e confirme a versão instalada e os containers em execução.

Terminal
# Versão do Docker Engine
docker --version

# Versão do Compose
docker compose version

# Containers ativos
docker ps

# Occupying: imagens baixadas
docker images
Importante: a utilization do Docker está condicionada aos limites do plano contratado. Containers que excedam o uso de CPU, memória ou disco podem ser interrompidos.

2. Publique sua aplicação

Crie um Dockerfile na raiz do projeto com a imagem da sua aplicação.

Dockerfile
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"]

3. Orquestre com Compose

O Compose sobe a aplicação junto de serviços auxiliares, como cache e filas de mensagens.

docker-compose.yml
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"
Terminal
# 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

4. Atualize a aplicação

Terminal
# 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

5. Torne o serviço acessível

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 do Apache
<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>

Práticas recomendadas

Não publique portas do container
Vincule as portas em 127.0.0.1 e use proxy reverso com HTTPS. Isso evita expor o serviço direto na internet.
Use variáveis de ambiente
Carregue senhas e tokens por env_file ou --env-file, e mantenha esses arquivos fora do Git.
Persista os volumes
Monte volumes para que uploads, logs e dados não sejam perdidos quando o container é reconstruído.
Monitore o consumo
Verifique o uso de CPU, memória e disco com docker stats e docker system df antes de publicar novos serviços.
E-MAIL

E-mail grátis com Roundcube

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.

Webmail Roundcube

Envie, responda e organize mensagens pelo navegador, sem configurar nenhum aplicativo.

Acesso em qualquer dispositivo

Configure o mesmo endereço no Outlook, no celular ou em qualquer cliente compatível com IMAP.

Anexos e anti-spam

Envie arquivos com limite de tamanho definido no plano e filtros de proteção antispam.

1. Crie sua caixa de e-mail

Depois que o domínio estiver apontado para a hospedagem, crie a caixa pelo painel e acesse o Roundcube.

Endereço de acesso
# 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

2. Configure no Outlook ou no celular

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.

Outlook (Desktop)
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
Aplicativo de e-mail (Android/iOS)
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

3. Envie e-mail pela aplicação

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.

.env
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"}
config/mail.php
<?php

return [
    'transport' => 'smtp',
    'host' => env('MAIL_HOST'),
    'port' => env('MAIL_PORT'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'encryption' => 'tls',
];

4. Registros de DNS

O envio e o recebimento dependem dos registros abaixo. Depois de configurá-los, aguarde a propagação e verifique a caixa no Roundcube.

Registros DNS
# 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"

Boas práticas de uso

Ative a navegação segura
Não marque "Confiar no remetente" como regra global. Use a marca de segurança do domínio e confira anexos antes de abrir.
Use senha forte e individual
Cada caixa deve ter sua própria senha. Nunca reutilize a senha do painel, do FTP ou do banco de dados.
Mantenha backup da agenda
Exporte os contatos e as regras de filtro periodicamente, porque os dados da caixa não são versionados.
Confira os limites do plano
Respeite a quantidade de caixas e o tamanho máximo de anexo definidos no plano contratado.
PRIVACIDADE

Privacidade e Termos de Uso

Transparência sobre os dados processados, segurança da plataforma, confidencialidade do código e responsabilidades dos usuários.

Este conteúdo é uma visão geral e não substitui os documentos jurídicos oficiais da plataforma.

Coleta e uso de dados

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.

Segurança e armazenamento

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.

Código-fonte e propriedade intelectual

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.

Retenção e exclusã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.

LGPD e GDPR

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.

Uso aceitável

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.

CENTRAL DE AJUDA

Documentação e FAQ

Encontre rapidamente instruções e respostas para as dúvidas mais comuns.

NPM e Pacotes Privados
Um repositório NPM privado é um registry utilizado para armazenar e distribuir pacotes que não devem ficar publicamente disponíveis.
O arquivo .npmrc permite configurar o comportamento do NPM, incluindo registries, escopos e mecanismos de autenticação.
O prefixo @empresa representa um escopo. Ele permite organizar pacotes relacionados a uma organização, projeto ou namespace.
Prefira variáveis de ambiente ou um gerenciador de secrets do seu ambiente de desenvolvimento e CI/CD. Evite armazená-lo diretamente no código-fonte.
Bancos de Dados
A hospedagem Hostioo disponibiliza MySQL 8 e PostgreSQL. Ambos podem ser usados ao mesmo tempo, cada um com seu próprio banco, usuário e senha, em sites, APIs e tarefas agendadas.
Crie um usuário dedicado em vez de usar root. Em MySQL, utilize CREATE DATABASE seguido de GRANT ALL PRIVILEGES. Em PostgreSQL, use CREATE DATABASE e CREATE USER WITH PASSWORD, verificando a permissão de validação de senha no arquivo pg_hba.conf.
Sim. O Supabase auto-hospedado pode ser instalado com Docker Compose no seu servidor e utilizado de forma regular, com os mesmos recursos da versão em nuvem: autenticação, storage, realtime, APIs geradas automaticamente e painel de administração.
Use a URL da API e a chave anônima no frontend, mantendo a chave de serviço apenas no backend. Publique a instalação em um domínio com HTTPS, utilize o pooler de conexões em aplicações com muito tráfego e mantenha backups do volume de dados.
Docker
Sim. O Docker Engine e o Docker Compose já estão instalados e disponíveis por SSH, sem custo adicional. Basta conectar por SSH e publicar sua aplicação com um Dockerfile ou um docker-compose.yml.
Use docker compose up -d --build para publicar e docker compose logs -f para acompanhar. Para atualizar, execute git pull seguido de um novo compose up. As portas do container devem ficar vinculadas em 127.0.0.1 e expostas por proxy reverso com HTTPS.
Sim. O uso de CPU, memória, disco e a quantidade de containers seguem os limites do plano contratado. Container que exceda esses limites pode ser interrompido, então monitore com docker stats e docker system df.
E-mail
Sim. Toda hospedagem inclui contas de e-mail gratuitas com Roundcube, o webmail mais usado do mercado. Você cria a caixa pelo painel e acessa pelo navegador, com os mesmos dados para configurar Outlook ou celular.
Use IMAP com SSL/TLS na porta 993 para receber e SMTP com STARTTLS na porta 587 para enviar. O servidor é mail.seudominio.com e o usuário é o endereço completo da caixa.
Na maioria dos casos faltam os registros MX, SPF, DKIM e DMARC do domínio, ou o apontamento DNS ainda está propagando. Depois de corrigir, aguarde a propagação e verifique a caixa no Roundcube.
Conta e Segurança
Utilize uma senha exclusiva, habilite mecanismos adicionais de autenticação quando disponíveis e revise regularmente os acessos e tokens associados à conta.
Revogue o token comprometido o quanto antes, gere uma nova credencial e verifique os logs disponíveis para identificar possíveis usos não autorizados.
Privacidade
O tratamento depende dos serviços utilizados e pode envolver dados necessários para autenticação, suporte, segurança, operação da conta e cumprimento de obrigações legais.
Pacotes configurados como privados não devem ser disponibilizados publicamente pelo registry privado. As condições específicas de confidencialidade e propriedade intelectual devem ser verificadas nos contratos e termos aplicáveis.

Nenhum artigo encontrado

Tente utilizar outros termos de busca.