Saltar al contenido

Configuración ​

Arkvory tiene dos tipos de ajustes:

  • Ajustes del servidor son variables ARKVORY_* en el archivo config/runtime.json. Establecen la dirección, los límites, el almacenamiento y cosas similares. La API, el proceso de trabajo (worker) y el agente de copias de seguridad los leen al iniciarse.
  • Política de instalación es la política de actualización, los archivos HTTPS, el almacén de copias y los espejos. Se cambia con el comando arkvory configure. El comando comprueba el cambio, reinicia lo necesario y restaura el estado anterior cuando los servicios no arrancan.

Esta página muestra dónde están los archivos, qué comandos existen y cómo funcionan los ajustes principales. La lista completa de variables, con valores predeterminados y rangos, está en Variables de entorno.

Dónde se guarda la configuración ​

La raíz de la instalación contiene todo. Es C:\ProgramData\ProAnima\Arkvory en Windows y /opt/proanima-arkvory en Linux. Una instalación de Compose usa la misma raíz en el host. Las rutas siguientes son relativas a la raíz.

ArchivoContenidoCómo cambiarlo
config/runtime.jsonLos ajustes del servidor. Las claves empiezan por ARKVORY_ y cada valor es una cadena. Contiene la contraseña de la base de datosA mano, o con configure
config/keys.jsonHashes SHA-256 de la clave de recuperación y de la clave de disponibilidad. Nunca contiene una claveSolo para reemplazar la clave de recuperación
config/bootstrap-token.txtLa clave de recuperaciónSolo para reemplazarla
config/health-token.txtLa clave que usan las herramientas de instalación para la comprobación de disponibilidadNo cambiar
config/hub.jsonLa dirección del hub, el canal de actualización y el ajuste de estadísticasCon configure
config/install-idUn ID de instalación aleatorio, enviado al hub solo con las estadísticas activadasNo cambiar
config/mirrors/La lista de espejos y las claves que usa el worker para los orígenesCon configure --mirror
config/webhooks/La lista de suscripciones, los secretos de firma y las autoridades de los receptores que usa el workerCon configure --webhook
installation.jsonEl modo, el motor, el ajuste de actualización automática, la fijación de versión y la versión instaladaSolo con comandos
github-token.txtToken de GitHub opcional para descargar versiones. Consulte ActualizacionesA mano
config/compose.env, config/compose.vault.yml, config/compose.mirrors.ymlSolo Compose: la imagen, el montaje del almacén y el montaje del espejoSolo con comandos

En una instalación nativa de Linux, runtime.json y keys.json son root:arkvory con modo 0640, y los archivos de credenciales en config/ solo los puede leer root. Una instalación de Compose usa el modo 0644 para los archivos que leen los contenedores: consulte Docker Compose. Mantenga los propietarios y los modos que establece el instalador.

Comandos del ciclo de vida ​

Todos los comandos necesitan derechos de administrador y la opción --root con la raíz de la instalación.

InstalaciónCómo ejecutar un comando
Paquete de Linuxsudo arkvory <command> --root /opt/proanima-arkvory
Windows, instalador gráficoEn un PowerShell con privilegios elevados: & 'C:\Program Files\ProAnima\Arkvory\arkvory.ps1' <command> --root C:\ProgramData\ProAnima\Arkvory
Instalación por script, Composesudo <root>/runtime/node-v24.21.0-linux-x64/bin/node <root>/manage.mjs <command> --root <root>. En Windows use runtime\node-v24.21.0-win-x64\node.exe

arkvory help lista los comandos sin necesidad de derechos especiales. Los ejemplos de este sitio usan la forma corta arkvory <command>.

ComandoUso
statusMuestra el modo de instalación, el motor, el ajuste de actualización automática, la fijación de versión y la versión instalada
configureCambia una política. Consulte El comando configure
updateInstala ahora una versión estable más reciente. Consulte Actualizaciones
upgradeInstala una versión que cambia el esquema de la base de datos con un registro de copia de seguridad propio. Consulte Actualizaciones
recoverTermina una actualización interrumpida. Consulte Actualizaciones
finish-installContinúa una primera instalación interrumpida
updates-connectConecta la consola y el temporizador de actualizaciones, y registra los servicios que le faltan a una instalación antigua
updates-poll, updates-reset, changes-resetLos ejecuta el temporizador de actualizaciones y sirven para la recuperación. Consulte Actualizaciones

Solo se ejecuta un comando a la vez. Un segundo comando se detiene con Installation is locked. Nunca ponga una clave ni una contraseña en una opción de comando: use archivos.

El comando configure ​

Una llamada cambia un tipo de ajuste. Los seis tipos no se pueden mezclar en una sola llamada.

TipoOpcionesEfecto
HTTPS--tls-cert FILE --tls-key FILE [--listen-host ADDRESS], o --tls-off [--listen-host ADDRESS]Activa o desactiva el HTTPS integrado. Reinicia los servicios y comprueba la disponibilidad. Consulte HTTPS
Almacén de copias--backup-vault DIRECTORY [--vault-key-file FILE | --init-vault --vault-no-encryption], o --backup-vault-offConecta o desconecta el almacén. Reinicia solo el agente de copias de seguridad. Consulte Copias de seguridad
Espejos--mirror REPOSITORY --mirror-upstream URL --mirror-token-file FILE [--mirror-source REPOSITORY] [--mirror-stages LIST] [--mirror-ca-file FILE], o --mirror REPOSITORY --mirror-token-file FILE para una clave nueva, o --mirror-detach REPOSITORY[,REPOSITORY…] o --mirror-detach allConvierte un repositorio en espejo o en destino de importación, o vuelve a hacerlo ordinario. Consulte Espejos
Webhooks--webhook ID --webhook-repository REPOSITORY --webhook-url URL --webhook-secret-file FILE [--webhook-next-secret-file FILE] [--webhook-actions LIST] [--webhook-allow-private LIST] [--webhook-ca-file FILE], o --webhook-detach IDAñade, sustituye o elimina una suscripción a webhooks. Reinicia los servicios y comprueba que estén listos. Consulte Webhooks
Clúster--cluster ha-2 o ha-3 [--cluster-resource NAME]En el primario de un volumen replicado: activa el modo clúster. Consulte Clúster de alta disponibilidad
Actualizaciones--enable-updates, --disable-updates, --pin [--version X.Y.Z], --unpin, --update-channel stable o beta, --statistics on o off, --hub-url URL, --hub-offCambia la política de actualización. Consulte Actualizaciones

Los cambios de HTTPS, almacén y espejos reinician servicios y restauran la configuración anterior cuando el cambio no funciona. Las opciones de actualización solo reescriben installation.json y hub.json; no reinician nada. Las rutas de archivo son absolutas.

Ajustes por tarea ​

Dirección y puerto ​

VariableValor predeterminadoSignificado
ARKVORY_HOST127.0.0.1La dirección en la que escucha la API
ARKVORY_PORT8080El puerto TCP

Con el valor predeterminado, solo los programas del servidor pueden conectarse. Para aceptar otros equipos, elija una de dos formas:

  • HTTPS integrado. arkvory configure --tls-cert … --tls-key … --listen-host 0.0.0.0. Consulte HTTPS.
  • Un proxy inverso en otro equipo. Establezca ARKVORY_HOST en la dirección de la interfaz de red para el proxy e incluya el proxy en ARKVORY_TRUSTED_PROXIES. Edite runtime.json, o ejecute arkvory configure --tls-off --listen-host <address>. Restrinja el puerto con un cortafuegos al proxy.

--listen-host por sí solo se rechaza: úselo con los archivos TLS o con --tls-off. Después de --tls-off, agregue --listen-host 127.0.0.1 para volver a loopback, o la API seguirá escuchando en la dirección establecida.

Cuando la API escucha en una dirección que no es loopback sin TLS y sin un proxy de confianza, registra la advertencia http.plaintext_exposed al iniciarse. Nunca envíe claves por HTTP sin cifrar entre equipos.

En Linux los servicios se ejecutan como una cuenta sin privilegios, que normalmente no puede escuchar en un puerto inferior a 1024. Los accesos directos a la consola (menú Inicio, entrada de menú) siguen apuntando al puerto 8080. Los comandos del ciclo de vida siguen la dirección y el puerto de runtime.json. En una instalación de Compose, la dirección y el puerto son fijos: consulte Docker Compose.

Dirección pública y cabeceras reenviadas ​

No hay un ajuste para una URL pública. El servidor construye los enlaces absolutos, como los enlaces de Git LFS y las respuestas de npm, a partir de la solicitud: el esquema es https cuando la conexión es TLS o cuando el proxy envía X-Forwarded-Proto: https, y el host es la cabecera Host. Un proxy incluido en ARKVORY_TRUSTED_PROXIES también puede establecer el host con X-Forwarded-Host. Por lo tanto, su proxy debe reenviar el nombre público. Consulte HTTPS.

ARKVORY_TRUSTED_PROXIES admite hasta 32 direcciones o rangos CIDR, separados por comas. Solo estos pares pueden establecer la dirección del cliente con X-Forwarded-For y el ID de solicitud con X-Request-Id. Sin la lista, todos los clientes parecen venir de la dirección del proxy y el límite de inicio de sesión los cuenta como uno solo.

Navegadores en otra dirección ​

ARKVORY_CORS_ORIGINS lista hasta 16 orígenes de una consola u otra aplicación web que se ejecuta en una dirección diferente, separados por comas. Cada origen tiene un esquema, un host y un puerto opcional, y ninguna ruta. Debe usar HTTPS; el HTTP sin cifrar solo se acepta para localhost, 127.0.0.1 y [::1]. Consulte HTTPS. ARKVORY_ALLOW_REGISTRATION=true permite que las personas creen sus propias cuentas en la página de inicio de sesión; está desactivado de forma predeterminada.

Base de datos ​

VariableValor predeterminadoSignificado
ARKVORY_DATABASE_URLla establece el instaladorLa URL de conexión de PostgreSQL. Una base de datos gestionada escucha en 127.0.0.1 en el puerto elegido durante la instalación
ARKVORY_DATABASE_POOL_SIZE10El tamaño del grupo de conexiones de la API, de 4 a 200

No apunte una instalación a otra base de datos. Los archivos almacenados y el catálogo van juntos. Mudarse a una nueva base de datos es una restauración desde una copia de seguridad: consulte Copias de seguridad. Para un PostgreSQL externo, establezca max_connections lo bastante alto para el grupo de la API, una conexión por cada subida simultánea para los bloqueos de escritura, 5 para el worker y las conexiones del agente de copias de seguridad.

Directorio de almacenamiento y espacio libre ​

VariableValor predeterminadoSignificado
ARKVORY_DATA_DIR<root>/dataDónde se almacena el contenido de los archivos. Lo establece el instalador. Use un disco local
ARKVORY_CAPACITY_BYTES10 TiBLo máximo que puede usar todo el contenido reservado. Es un límite sobre las reservas, no una medición del disco
ARKVORY_STORAGE_RESERVE_BYTES1 GiBEspacio libre que las subidas nunca usan. 0 desactiva la reserva
ARKVORY_MAX_OBJECT_BYTESunos 10 TiBEl objeto individual más grande. Establezca un valor menor para limitar el tamaño de archivo

Mantenga ARKVORY_DATA_DIR donde lo puso el instalador. Las unidades de Linux solo pueden escribir en data/, logs/ y updates/inbox/ de la raíz, por lo que otra ruta es de solo lectura para ellas. Para usar un disco más grande, detenga los servicios, copie el contenido al disco nuevo, monte el disco en data/ con el propietario arkvory e inicie los servicios. En Windows y Linux también puede elegir la propia raíz cuando instala con un script (-Root, ARKVORY_INSTALL_ROOT). Consulte Almacenamiento.

Límites de transferencia ​

Los límites pertenecen a un proceso de la API. Una tasa de 0 significa sin límite.

VariableValor predeterminadoSignificado
ARKVORY_MAX_UPLOADS2Subidas al mismo tiempo, de 1 a 32
ARKVORY_MAX_DOWNLOADS16Descargas al mismo tiempo, de 1 a 256
ARKVORY_MAX_UPLOADS_PER_PRINCIPAL1Subidas simultáneas de una cuenta o clave
ARKVORY_MAX_DOWNLOADS_PER_PRINCIPAL4Descargas simultáneas de una cuenta o clave
ARKVORY_DOWNLOAD_STRATEGYorderedOrden de la cola de descargas: ordered (clases y turnos), smallest-first o shared (sin cola, como antes)
ARKVORY_UPLOAD_BYTES_PER_SECOND0Tasa de subida total en bytes por segundo
ARKVORY_DOWNLOAD_BYTES_PER_SECOND0Tasa de descarga total en bytes por segundo
ARKVORY_UPLOAD_DEADLINE_MS1800000El tiempo máximo de una solicitud de subida, 30 minutos
ARKVORY_UPLOAD_IDLE_TIMEOUT_MS30000Una solicitud de subida que no envía datos durante este tiempo se detiene

Un proxy delante de la API debe permitir una solicitud al menos tan larga como ARKVORY_UPLOAD_DEADLINE_MS. Consulte HTTPS. Todos los demás límites, como la cola de espera y las tasas por cuenta, están en Variables de entorno.

Los valores de la cola de descargas (estrategia, descargas simultáneas, reserva, pesos y los demás) también se pueden cambiar sin reiniciar: Sitios → Ajustes de este sitio, o PUT /api/v1/system/downloads/settings. Los valores guardados prevalecen sobre estas variables en el proceso de escritura; vea Sitios.

Copias de seguridad y espejos ​

Use configure para ambos. --backup-vault escribe ARKVORY_BACKUP_VAULT, concede a la cuenta de servicio acceso al directorio, reinicia solo el agente de copias de seguridad y conserva el cambio solo cuando el agente informa que el almacén está disponible. El almacén debe estar fuera de la raíz de la instalación y fuera del almacenamiento. --mirror escribe ARKVORY_MIRRORS_FILE y los archivos de claves, reinicia la API y el worker, y comprueba el origen con su clave antes de cambiar nada.

Actualizaciones y el hub ​

La política de actualización está en installation.json y config/hub.json. Las opciones están en El comando configure y su significado en Actualizaciones. ARKVORY_HUB_URL en runtime.json es aparte: establece dónde envía la consola los comentarios. configure --hub-url o --hub-off cambia ambos, y la dirección de comentarios se actualiza tras el siguiente reinicio de los servicios.

Registros y apagado ​

VariableValor predeterminadoSignificado
ARKVORY_LOG_LEVELinfodebug, info, warning o error. Los niveles warning y error también ocultan el registro de acceso
ARKVORY_ACCESS_LOGtrueUn registro JSON por cada solicitud HTTP. La cadena de consulta nunca se escribe
ARKVORY_DRAIN_TIMEOUT_MS30000Tras una solicitud de parada, el tiempo para que terminen las solicitudes en curso

Los supervisores dan a un servicio 120 segundos para detenerse. Si establece un tiempo de drenaje superior a unos 90 segundos, aumente también el tiempo de espera de parada del gestor de servicios: TimeoutStopSec en las unidades de systemd, el tiempo de espera de parada de los servicios de Windows y stop_grace_period en Compose. Consulte Monitorización.

Aplicar un cambio ​

configure aplica su propio cambio. Para todo lo que edite en config/runtime.json:

  1. Haga una copia del archivo, por ejemplo sudo cp -p /opt/proanima-arkvory/config/runtime.json /root/runtime.json.bak. Contiene la contraseña de la base de datos: mantenga la copia en privado.

  2. Edite el archivo en su sitio. Mantenga el JSON válido, con cada valor como una cadena.

  3. Compruebe el propietario y el modo. En Linux deben seguir siendo root:arkvory y 0640. Repárelos con sudo chown root:arkvory runtime.json y sudo chmod 0640 runtime.json.

  4. Reinicie los servicios. Los ajustes se leen solo al iniciar.

    bash
    sudo systemctl restart arkvory-api arkvory-worker arkvory-backup
    powershell
    Restart-Service Arkvoryapi, Arkvoryworker, Arkvorybackup

    En una instalación de Compose, detenga e inicie los contenedores con el comando compose de Docker Compose:

    bash
    "${compose[@]}" stop --timeout 120 backup worker api
    "${compose[@]}" up -d --wait api worker
    "${compose[@]}" up -d backup
  5. Compruebe el resultado. Un valor fuera de su rango detiene el proceso al iniciar con un mensaje que nombra la variable, nunca su valor. En Linux léalo con journalctl -u arkvory-api -n 50. En ese caso Arkvory no recurre a un valor predeterminado.

Un reinicio interrumpe las transferencias en curso. Los clientes las reanudan.

Reemplazar la clave de recuperación ​

Reemplace la clave de recuperación si sospecha que alguien ha leído config/bootstrap-token.txt. La clave se guarda en dos lugares que deben cambiar juntos: el archivo bootstrap-token.txt contiene la clave, y la entrada bootstrap-owner en keys.json contiene su SHA-256. Mantenga la entrada deployment-health tal cual.

  1. Haga una copia de config/keys.json.

  2. Guarde este script como replace-recovery-key.mjs:

    js
    import { createHash, randomBytes } from 'node:crypto';
    import { readFileSync, writeFileSync } from 'node:fs';
    
    const directory = process.argv[2];
    const token = randomBytes(32).toString('hex');
    const keys = JSON.parse(readFileSync(`${directory}/keys.json`, 'utf8'));
    const owner = keys.find((key) => key.id === 'bootstrap-owner');
    if (!owner) throw new Error('No bootstrap-owner entry');
    owner.sha256 = createHash('sha256').update(token).digest('hex');
    writeFileSync(`${directory}/keys.json`, JSON.stringify(keys, null, 2));
    writeFileSync(`${directory}/bootstrap-token.txt`, token);
  3. Ejecútelo como root o Administrador con el Node.js de la instalación. El script escribe en los archivos existentes, así que los propietarios y las reglas de acceso permanecen como están.

    bash
    sudo /opt/proanima-arkvory/runtime/node ./replace-recovery-key.mjs /opt/proanima-arkvory/config
    powershell
    & 'C:\ProgramData\ProAnima\Arkvory\runtime\node.exe' .\replace-recovery-key.mjs 'C:\ProgramData\ProAnima\Arkvory\config'

    Tras una instalación por script, use el Node.js que está en runtime\node-v24.21.0-… en su lugar.

  4. Reinicie los servicios como se muestra en Aplicar un cambio.

  5. Lea la nueva clave de config/bootstrap-token.txt, y elimine el script y la copia de keys.json.

Las cuentas, los tokens personales y las claves de servicio no se ven afectados. Viven en la base de datos.

Arkvory · ProAnimaStudio