🌐 Эта страница еще не переведена на русский. Показана португальская (BR) версия. Помочь с переводом.
Instalador one-liner (Linux / macOS)
Forma rápida de subir o RoqueOS Server numa máquina Linux ou macOS. Funciona em fresh install e em update — o script é idempotente.
Pré-requisitos
- Linux Ubuntu 22.04+ ou Debian 12+ (Mint, Pop!_OS, derivados também funcionam) OU macOS 13+
- Docker instalado (
docker --versionretorna ≥ 24.x) - Porta 27021 liberada no firewall (
sudo ufw allow 27021/tcpno Ubuntu) - 4 GB RAM mínimo (recomendado 8 GB), 20 GB de disco livre
Não precisa instalar nada manualmente além do Docker — o script cuida do resto.
Comando padrão
curl -fsSL https://roqueos.com.br/install.sh | bashEm ~2 min você tem roqueos-server rodando em http://localhost:27021.
A próxima coisa que você vê depois do install.sh terminar é o passo de criar a primeira API Key admin no painel web em http://<seu-ip>:27021/admin. Salve apiKey + apiSecret em local seguro — é mostrado uma única vez.
Flags úteis
# Instalar + habilitar RoqueClaw (agente IA, +2 GB imagem)
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --with-roqueclaw
# Instalar + habilitar Cloud Gaming (Android na nuvem, +1.5 GB imagem)
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --with-android-gaming
# Atualizar uma instância existente (preserva config + secrets + volumes)
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --update -y
# Atualizar + liberar espaço (prune imagens dangling depois do pull)
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --update -y --force-image-prune
# Subir em porta diferente (ex.: 8080 já em uso pelo seu app)
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --port 8080
# Diretório de dados custom
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --data-path /mnt/raid/roqueos
# Não-interativo (CI, scripts) — auto-confirma prompts
curl -fsSL https://roqueos.com.br/install.sh | bash -s -- --with-roqueclaw -yFlag completa (curl ... | bash -s -- --help):
| Flag | Descrição |
|---|---|
--with-roqueclaw | Instala agente IA OpenClaw (~2 GB imagem extra) |
--with-android-gaming | Instala Cloud Gaming (Android emulado + ws-scrcpy, ~1.5 GB) |
--port PORT | Porta do servidor (default: 27021) |
--data-path PATH | Diretório de dados persistente (default: /data/roqueos) |
--update | Força recreate do container mesmo se digest está igual (use após config tweaks) |
--force-image-prune | Após update, docker image prune -f libera disco |
-y, --yes, --skip-prompts | Auto-confirma prompts (não-interativo) |
--help | Mostra ajuda completa |
O que o --update preserva
Esta é a invariante mais importante do script: o update NUNCA perde config. Pode rodar quantas vezes quiser, sem medo.
Preservados (sobrevivem a --update --force-recreate):
- ✅
JWT_SECRET,ENCRYPTION_KEY,GUACAMOLE_CRYPT_KEY(em/data/roqueos/.roqueos-secrets.env) - ✅ Banco SQLite (volume Docker
roqueos-db) - ✅ Arquivos dos usuários (
/data/roqueos/users/) - ✅ Cache de transcoding (volume
roqueos-transcode-cache) - ✅ Config de Cloudflare Tunnel (tunnel token, rotas)
- ✅ API Keys cadastradas
- ✅ Network Storage configurados (SMB/NFS)
- ✅ Containers instalados via App Store
Único cenário onde update PODE perder dados: se você apagar manualmente o volume roqueos-db ou o diretório /data/roqueos/. O script nunca faz isso sozinho.
Auto-rollback em falha
Se o update falhar (smoke check em /health não responde 200 dentro de 60s), o script automaticamente:
- Detecta falha via
smoke_check_post_update - Restaura a imagem tagada como
:previous(gerada antes dodocker pull) - Recria o container com a versão anterior
- Sai com erro descritivo no stderr
Você nunca fica num estado degradado por bug de version nova.
Rollback manual
# Lista versões disponíveis
docker images roqueribeiro1988/roqueos-server
# Volta pra versão específica
docker stop roqueos-server && docker rm roqueos-server
docker run -d --name roqueos-server --restart unless-stopped -p 27021:27021 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/roqueos/users:/data/roqueos/users \
-v /data/roqueos/shared:/data/roqueos/shared \
-v roqueos-db:/app/data \
-v roqueos-transcode-cache:/app/transcode-cache \
--env-file /data/roqueos/.roqueos-secrets.env \
-e NODE_ENV=production \
roqueribeiro1988/roqueos-server:v1.0.13 # ← versão desejadaCloud provisioning (4 flags internas)
Estas flags NÃO são pra você usar manualmente — são consumidas pelo cloud-init que provisiona VMs do RoqueOS Cloud. Documentadas aqui por completude:
| Flag | Função |
|---|---|
--customer-id ID | UID do cliente cloud |
--tier NAME | starter / pro / power |
--provisioning-token TOKEN | Token hex one-time (64 chars, expira 30 min) |
--provisioning-callback URL | Cloud Function endpoint que registra o admin key |
Quando as 4 estão presentes, install.sh chama POST /admin/setup localmente, pega {apiKey, apiSecret} e POSTa pro callback. Ver provisioning flow.
Troubleshooting
| Sintoma | Diagnóstico |
|---|---|
docker: command not found | Instalar Docker primeiro: curl -fsSL https://get.docker.com | sh |
port 27021 already in use | Outro processo na porta. sudo lsof -i :27021 pra descobrir; usar --port 8080 |
permission denied no /var/run/docker.sock | Adicionar user no grupo docker: sudo usermod -aG docker $USER (re-login depois) |
/health 502 após boot | Container ainda subindo. Aguarde 30s e teste de novo. Se persiste: docker logs roqueos-server |
| Update falha com "image pull rate limit" | Docker Hub anônimo limita pulls. Login: docker login ou aguardar 6h |
Logs em tempo real:
docker logs -f roqueos-serverStatus detalhado:
curl -sS http://localhost:27021/health | python -m json.toolPróximos passos
- Acessar
http://<seu-ip>:27021/adminno navegador - Criar primeira API Key admin
- Login em
https://roqueos.com.br/app - Settings → Server → "Adicionar servidor" → colar URL + apiKey + apiSecret
- Ver wizard de bootstrap pra detalhes do passo a passo
Referências
- Atalhos PowerShell pra Windows — versão Windows do mesmo script
- Volumes e backup — o que persiste entre updates
- App Store de containers — instalar Plex/Nextcloud/etc com 1 clique
- RoqueClaw setup — habilitar o agente IA depois