# Tutorial Solar + OnlyOffice

# Tutorial de Instalação – Solar

## **Tutorial de Instalação – Solar**

#### **1. Dockerfile personalizado**

**Para garantir o funcionamento correto da aplicação, utilize o `Dockerfile` abaixo. Ele realiza a instalação de bibliotecas necessárias e corrige erros comuns relacionados a dependências de sistema e pacotes Python.**

**Substitua o conteúdo do `Dockerfile` localizado na raiz do projeto por este:**

> FROM python:3.9-slim
> 
> \# Exibe as mensagens de saída sem buffer  
> ENV PYTHONUNBUFFERED=1
> 
> \# Argumentos de build  
> ARG POETRY\_ARGS  
> ARG SOLAR\_INSTALL\_MSODBC\_DRIVERS
> 
> \# Instala dependências do sistema  
> RUN apt-get update &amp;&amp; apt-get install -y \\  
>  build-essential \\  
>  cron \\  
>  curl \\  
>  ffmpeg \\  
>  git-core \\  
>  libfontconfig1 \\  
>  libfreetype6-dev \\  
>  libldap2-dev \\  
>  libmagic1 \\  
>  libpq-dev \\  
>  libsasl2-dev \\  
>  libssl-dev \\  
>  libxrender1 \\  
>  unixodbc \\  
>  python3-dev &amp;&amp; \\  
>  rm -rf /var/lib/apt/lists/\*
> 
> \# Instala drivers do Microsoft SQL Server, se solicitado  
> RUN if \[ ! -z "$SOLAR\_INSTALL\_MSODBC\_DRIVERS" \]; then \\  
>  curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc &amp;&amp; \\  
>  echo "deb \[arch=amd64,arm64,armhf\] https://packages.microsoft.com/debian/12/prod bookworm main" | tee /etc/apt/sources.list.d/mssql-release.list &amp;&amp; \\  
>  apt-get update &amp;&amp; \\  
>  ACCEPT\_EULA=Y apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev &amp;&amp; \\  
>  echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' &gt;&gt; ~/.bashrc; \\  
>  fi
> 
> \# Configuração do ambiente Python  
> COPY --chown=1000:1000 pyproject.toml poetry.lock /app/src/  
> WORKDIR /app/src/
> 
> RUN pip install --upgrade pip &amp;&amp; \\  
>  pip install --force-reinstall virtualenv &amp;&amp; \\  
>  pip install poetry &amp;&amp; \\  
>  poetry config virtualenvs.create false &amp;&amp; \\  
>  poetry install ${POETRY\_ARGS:-} &amp;&amp; \\  
>  rm -rf /app/src/pyproject.toml /app/src/poetry.lock
> 
> \# Copia o código-fonte da aplicação  
> COPY . /app/src/
> 
> \# Prepara diretórios e arquivos estáticos  
> RUN mkdir -p /app/src/staticfiles\_producao/ /app/src/log/ &amp;&amp; \\  
>  python manage.py collectstatic\_js\_reverse &amp;&amp; \\  
>  python manage.py collectstatic --clear --noinput &amp;&amp; \\  
>  python manage.py compress --force
> 
> \# Configura o cron para limpeza periódica da pasta /tmp  
> COPY crontab\_scripts/cleanup-tmp /etc/cron.d/cleanup-tmp  
> RUN chmod 0644 /etc/cron.d/cleanup-tmp &amp;&amp; \\  
>  chmod u+x "/app/src/start-cron.sh"
> 
> \# Define o entrypoint e porta exposta  
> ENTRYPOINT \["sh", "/app/src/start-cron.sh"\]  
> EXPOSE 1024
> 
> Comando padrão do container  
> CMD \["uwsgi", "--ini", "/app/src/uwsgi/solar.ini"\]

#### 2. Arquivo `.env`

Crie um arquivo chamado `.env` na raiz do projeto e adicione o conteúdo abaixo. Ele define todas as variáveis de ambiente necessárias para executar o projeto localmente com a base de testes do Solar:

> \# Configurações de Debug e Logs  
> DEBUG=True  
> DEBUG\_TOOLBAR=False  
> DEBUG\_TEMPLATE=False  
> DEBUG\_VSCODE=False
> 
> SENTRY\_DSN=  
> SENTRY\_TRACES\_SAMPLE\_RATE=0.1
> 
> \# Analytics  
> GOOGLE\_ANALYTICS\_ID=  
> GOOGLE\_ANALYTICS\_4\_ID=
> 
> \# Acesso  
> SECRET\_KEY=WD8saoCWCsjy4IQS3m7DGGNGn2nLKVsv  
> ALLOWED\_HOSTS=\*  
> TIME\_ZONE=America/Sao\_Paulo
> 
> \# Sessão  
> SESSION\_COOKIE\_AGE=86400  
> SESSION\_SAVE\_EVERY\_REQUEST=False
> 
> \# Banco de Dados  
> DATABASE\_URL=postgres://postgres:postgres@172.88.0.95:5432/db\_solar  
> DATABASE\_CONN\_MAX\_AGE=60  
> DATABASE\_APPLICATION\_ID=  
> DATABASE\_APPLICATION\_NAME=
> 
> MEMCACHED\_DATABASE\_URL=memcached:11211  
> REDIS\_DATABASE\_URL=redis://redis:6379  
> CACHEOPS\_ENABLED=True
> 
> \# APIs  
> CHRONUS\_PODE\_GERAR\_XLSX\_SEM\_PAGINACAO=False  
> CHRONUS\_URL=
> 
> PROCAPI\_URL=http://172.88.0.95:8001/  
> PROCAPI\_TOKEN=e406d9344a85bf229fc01e1ce4d6603c5432b8f8
> 
> LIVRE\_API\_URL=  
> LIVRE\_API\_TOKEN=  
> ATHENAS\_API\_URL=  
> PLANTAO\_API\_URL=
> 
> \# LDAP  
> LDAP\_AUTH\_BIND\_DN=CN=ldap.sitic@defensoria,OU=defensoria,DC=defensoria,DC=gdfnet,DC=d  
> LDAP\_AUTH\_BIND\_PASSWORD=f&amp;7A\*mS9  
> LDAP\_AUTH\_BIND\_SUFFIX=DC=defensoria,DC=gdfnet,DC=df  
> LDAP\_AUTH\_SERVER\_URI=10.233.68.2
> 
> \# Egide  
> EGIDE\_CLIENT\_ID=  
> EGIDE\_CLIENT\_SECRET=  
> EGIDE\_URL=  
> EGIDE\_REDIRECT\_URI=
> 
> \# E-mail  
> EMAIL\_HOST=relay.gdfnet.df.gov.br  
> DEFAULT\_FROM\_EMAIL=no-replay-solar@defensoria.df.gov.br  
> EMAIL\_TO\_REPORT\_ERRORS=no-replay-solar@defensoria.df.gov.br  
> EMAIL\_HOST\_PASSWORD=  
> EMAIL\_HOST\_USER=  
> EMAIL\_PORT=25  
> EMAIL\_USE\_TLS=False  
> EMAIL\_USE\_SSL=False  
> EMAIL\_TIMEOUT=None
> 
> \# Notificações  
> SIGNO\_REST\_API\_URL=  
> SIGNO\_WEBSOCKET\_URL=
> 
> \# Chatbot  
> CHATBOT\_LUNA\_API\_TOKEN=  
> CHATBOT\_LUNA\_WEBHOOK\_URL=  
> CHATBOT\_LUNA\_VERIFY\_CERTFILE=True
> 
> \# Integração com E-Defensor (DPE-RR)  
> USAR\_EDEFENSOR=False  
> EDEFENSOR\_ADONIS\_HOSTNAME=  
> EDEFENSOR\_ADONIS\_PORT=  
> EDEFENSOR\_CHAT\_WEBSERVICE\_TOKEN\_URL=  
> EDEFENSOR\_CHAT\_WEBSERVICE\_TOKEN\_USERNAME=  
> EDEFENSOR\_CHAT\_WEBSERVICE\_TOKEN\_PASSWORD=  
> EDEFENSOR\_CHAT\_WEBSERVICE\_APP\_SYSTEM=  
> EDEFENSOR\_CATEGORIA\_AGENDA\_ID=
> 
> VERIFY\_CERTFILE=  
> CORS\_ORIGIN\_ALLOW\_ALL=True
> 
> \# SMS  
> MOVILE\_API\_URL=http://api-messaging.movile.com/v1/send-sms  
> MOVILE\_AUTH\_TOKEN=  
> MOVILE\_AUTH\_USER=
> 
> \# Outras configurações  
> SIGLA\_UF=DF  
> SIGLA\_INSTITUICAO=DPDF  
> NOME\_INSTITUICAO=Defensoria Pública do Distrito Federal  
> CNPJ\_INSTITUICAO=12219624000183
> 
> EXIBIR\_ALERTA\_AVALIACAO\_ASSISTIDO=True  
> MENSAGEM\_ALERTA\_AVALIACAO\_ASSISTIDO=&lt;p&gt;&lt;/p&gt;  
> EXIBIR\_ALERTA\_AVALIACAO\_ASSISTIDO\_129=True  
> MENSAGEM\_ALERTA\_AVALIACAO\_ASSISTIDO\_129=&lt;p&gt;&lt;/p&gt;
> 
> DATA\_UPLOAD\_MAX\_MEMORY\_SIZE=2621440

##### 3. docker-compose

1. Acesse a pasta `/docker`, copie o arquivo `docker-compose.override.dev.yml` para a raiz do projeto e renomeie para `docker-compose.override.yml`.
2. No arquivo `docker-compose.yml` localizado na raiz, comente o serviço `consumers`:

> <div class="overflow-y-auto p-4" dir="ltr">\# consumers:  
> \# build:  
> \# context: .  
> \# dockerfile: docker/web/Dockerfile  
> \# depends_on:  
> \# - redis  
> \# - memcached  
> \# - python  
> \# image: gitlab.defensoria.to.def.br:5000/defensoria/sisat/web:latest  
> \# command: python manage.py start_consumers  
> \# volumes:  
> \# - ./media/:/app/src/media/  
> \# - ./data/wkhtmltox/:/app/src/binarios_executaveis/  
> \# - ./log:/app/src/log  
> \# env_file:  
> \# - .env</div>

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-no-terminal%2C-execute"><div class="overflow-y-auto p-4" dir="ltr"><button aria-label="Copiar" class="flex gap-1 items-center select-none py-1"></button></div><div class="overflow-y-auto p-4" dir="ltr">No terminal, execute o comando para subir a aplicação:</div></div><div class="overflow-y-auto p-4" dir="ltr" id="bkmrk-"></div>> <div class="overflow-y-auto p-4" dir="ltr">docker compose up -d --build</div>

##### Configuração do OnlyOffice

<div class="overflow-y-auto p-4" dir="ltr" id="bkmrk-acesse-a-aplica%C3%A7%C3%A3o-e">1. Acesse a aplicação em `http://localhost:8000`.
2. Faça login com suas credenciais.
3. No painel do Django Admin, localize a seção `constance` na barra lateral.
4. Configure os seguintes campos:

- **ONLYOFFICE\_URL**: `http://172.88.0.95`
- **ONLYOFFICE\_JWT\_SECRET\_KEY**: `J5aD2HSbyVEBoJAaTMqgPOrHKNQAjvrl`
- **ONLYOFFICE\_CALLBACK\_URL**: gere um link público da sua aplicação local (porta 8000) com o [ngrok](https://ngrok.com/) e insira a URL aqui.  
    Exemplo: `<a href="https://6d48972af345.ngrok-free.app">https://6d48972af345.ngrok-free.app</a>`

</div>[![image.png](https://bookstack.ljit.com.br/uploads/images/gallery/2025-07/scaled-1680-/uETLVNuZIjLawM0Q-image.png)](https://bookstack.ljit.com.br/uploads/images/gallery/2025-07/uETLVNuZIjLawM0Q-image.png)

### Considerações Importantes

#### Evite versionar arquivos Docker

**Não adicione os arquivos de configuração Docker ao controle de versão do Git**. Esses arquivos são compartilhados entre todos os ambientes e **não devem ser alterados ou enviados com mudanças locais**.