Solução da comunidade

Corrigir /root/.cache como só de leitura no ZimaOS

A ZimaBlade user running ZimaOS hit a read-only error when immich-go tried to create /root/.cache; an official reply explained that most system folders are intentionally read-only.

Porque é que o /root/.cache é só de leitura no ZimaOS

O erro mkdir /root/.cache: read-only file system é consistente com o facto de o ZimaOS tratar grande parte do sistema de ficheiros do anfitrião como gerida pelo appliance e só de leitura. No tópico original, uma resposta oficial indicou explicitamente que a maioria das pastas do sistema permanece só de leitura, mesmo quando se inicia sessão como root, por motivos de segurança.

Este design também se reflete no atual guia do gestor de pacotes do ZimaOS e no guia relacionado sobre bibliotecas externas do Immich no ZimaOS.

Não contorne o problema forçando escritas em /root

Para uma aplicação em contentor, a melhor solução costuma ser colocar os dados persistentes de cache ou configuração num diretório persistente de dados da aplicação e mapeá-lo para o contentor. Para uma ferramenta autónoma, como o immich-go, defina o caminho da cache ou do diretório pessoal para uma localização com permissões de escrita, em vez de modificar a estrutura imutável do anfitrião.

Utilize os caminhos dos contentores de forma deliberada

As montagens vinculadas do Docker mapeiam um caminho gravável do anfitrião para o caminho que a aplicação espera dentro do contentor. A documentação oficial de armazenamento do Docker explica as montagens vinculadas e as respetivas implicações de segurança na documentação sobre montagens vinculadas do Docker.

Especificamente para o Immich, as pastas de fotografias existentes podem ser mapeadas como só de leitura quando o objetivo é indexá-las, e não modificá-las. A atual documentação sobre bibliotecas externas do Immich é a fonte de referência principal.

Um padrão mais seguro para o immich-go

  1. Crie ou escolha um diretório gravável de utilizador/dados da aplicação, gerido fora dos caminhos de sistema protegidos.
  2. Aponte a variável de ambiente ou a opção de linha de comandos da cache/configuração da ferramenta para essa localização, quando suportado.
  3. Se a executar num contentor, monte esse caminho gravável no diretório de cache esperado.
  4. Monte a biblioteca de fotografias de origem como só de leitura, a menos que o fluxo de trabalho precise intencionalmente de modificar os originais.
  5. Teste com um pequeno conjunto de fotografias antes de processar toda a biblioteca.

Porque é que o acesso root não significa que todos os caminhos sejam graváveis

Num sistema operativo appliance, o privilégio root e a possibilidade de escrever no sistema de ficheiros são controlos separados. Uma shell root pode continuar a encontrar uma montagem só de leitura. Em alguns ambientes Linux, pode ser possível remontar as partições do sistema com permissões de escrita, mas fazê-lo pode comprometer os pressupostos das atualizações e o comportamento de recuperação, pelo que não deve ser a solução predefinida neste caso.

Perguntas frequentes

O erro indica um disco avariado?

Não necessariamente. Neste caso da comunidade, tratava-se intencionalmente de um caminho do sistema só de leitura, e não de uma indicação de falha do dispositivo de armazenamento.

Posso utilizar /media para os dados da aplicação?

Utilize os caminhos de armazenamento que o ZimaOS disponibiliza para os seus discos geridos e mapeie-os deliberadamente para os contentores. Confirme o proprietário e as permissões antes de mover o estado da aplicação.

Devo remontar o sistema de ficheiros raiz com permissões de escrita?

Não como solução habitual. Prefira um caminho gravável de dados da aplicação ou do utilizador, que sobreviva às atualizações e corresponda ao modelo de armazenamento do ZimaOS.