Ejemplo de instalación en OpenBSD

Resumen

Este tutorial recorre una instalación sobre un OpenBSD mínimo con httpd(8), PHP, PostgreSQL y redis: paquetes, servidor web, base de datos, caché, tarea cron, chroot y los pasos finales en el asistente web. La plataforma no tiene soporte oficial. Está dirigido a quienes administran el servidor.

Fuente: documentación de Nextcloud, «admin_manual/installation/example_openbsd», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.

En APS Conecta Gestión esto difiere

Ver la página de APS Conecta Gestión.

Advertencia

Nextcloud no ofrece soporte oficial para OpenBSD ni para otros BSD

En este tutorial de instalación se despliega APS Conecta Gestión sobre un OpenBSD mínimo con nuestro propio httpd(8), PHP, PostgreSQL y redis (los pasos son los mismos para -stable y para -current).

Desde un sistema OpenBSD con la instalación base, basta con ejecutar:

# pkg_add nextcloud

Los paquetes adicionales:

# pkg_add postgresql-server redis pecl82-redis php-pdo_pgsql

Esto se encarga de las dependencias y ofrece las opciones para elegir la versión de PHP que se quiera.

HTTPD(8)

Crear un virtualhost en /etc/httpd.conf y añadirle el siguiente contenido:

  server "domain.tld" {
      listen on egress tls port 443
      hsts {
    max-age 15768000
    preload
    subdomains
  }

    tls {
          certificate "/etc/ssl/domain.tld_fullchain.pem"
          key "/etc/ssl/private/domain.tld_private.pem"
    }

    # Set max upload size to 513M (in bytes)
    connection max request body 537919488
    connection max requests 1000
    connection request timeout 3600
    connection timeout 3600

    root "/nextcloud"
    directory index "index.php"

    # Ensure that no '*.php*' files can be fetched from these directories
    location "/config/*" {
        block drop
    }

    location "/data/*" {
        block drop
    }

    # Note that this matches "*.php*" anywhere in the request path.
    location "/nextcloud/*.php*" {
        fastcgi socket "/run/php-fpm.sock"
    }

    location "/apps/*" {
        pass
    }

    location "/core/*" {
        pass
    }

    location "/.well-known/carddav" {
        block return 301 "https://$SERVER_NAME/remote.php/dav"
    }

    location "/.well-known/caldav" {
        block return 301 "https://$SERVER_NAME/remote.php/dav"
    }

    location "/.well-known/webfinger" {
        block return 301 "https://$SERVER_NAME/public.php?service=webfinger"
    }

    location match "/ocs-provider/*" {
        pass
    }
}

Asegurarse de que httpd(8) está habilitado e iniciado:

# rcctl enable httpd
# rcctl start httpd

PHP

Suponiendo que se usa OpenBSD -current (o >= 6.8-stable), se puede usar PHP 8.2, así que aquí se mantiene esa versión, pero el concepto es el mismo para otras versiones.

Los paquetes de PHP estarán disponibles, ya que APS Conecta Gestión se instaló con pkg_add, así que solo hace falta ajustar un poco el php.ini.

Se recomienda añadirle opcache:

[opcache]
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

Y aumentar algunos límites:

post_max_size = 513M
upload_max_filesize = 513M

Los módulos de PHP pueden habilitarse con:

# cd /etc/php-8.2.sample
# for i in *; do ln -sf ../php-8.2.sample/$i ../php-8.2/; done

Y luego solo queda habilitar e iniciar PHP:

# rcctl enable php82_fpm
# rcctl start php82_fpm

Base de datos

Como se ha mencionado, se usará PostgreSQL como base de datos; ya está instalado y ahora hay que inicializarlo:

$ su - _postgresql
$ mkdir /var/postgresql/data
$ initdb -D /var/postgresql/data -U postgres -A md5 -E UTF8 -W
...
Enter new superuser password: PASSWORD
Enter it again: PASSWORD
...
Success. You can now start the database server using:

pg_ctl -D /var/postgresql/data -l logfile start

$ pg_ctl -D /var/postgresql/data -l logfile start
server starting
$ exit

Hay que comprobar, habilitar e iniciar postgres:

# rcctl check postgresql
# rcctl enable postgresql
# rcctl start postgresql

Para crear usuarios y permisos, puede seguirse el README de /usr/local/share/doc/pkg-readmes/postgresql-server.

Redis

Redis se instaló antes; hay que habilitarlo e iniciarlo, y también añadirlo a la configuración de APS Conecta Gestión:

# rcctl enable redis
# rcctl start redis
# mg /var/www/nextcloud/config/config.php
...
  'memcache.local' => '\OC\Memcache\Redis',
  'redis' => array(
  'host' => 'localhost',
  'port' => 6379,
  'timeout' => 0.0,
),
...

Tarea cron

Hay que añadir la tarea cron de APS Conecta Gestión para que se realicen algunas tareas, agregando esta entrada al cronjob:

*/5 * * * * /usr/bin/ftp -Vo - https://domain.tld/cron.php >/dev/null

Chroot

Como en OpenBSD httpd(8) funciona de forma predeterminada con un chroot(8), hay que asegurarse de que los archivos necesarios están dentro de la jaula /var/www:

# mkdir -p /var/www/etc/ssl
# install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf \
        /var/www/etc/ssl/
# cp /etc/resolv.conf /var/www/etc

Pasos finales de APS Conecta Gestión

Los pasos de instalación restantes se completan en el asistente de instalación web.

Para activar este asistente, crear un archivo llamado CAN_INSTALL dentro de la carpeta config de la instalación:

# touch /var/www/nextcloud/config/CAN_INSTALL

Usar el navegador para ir a la URL de la instalación:

Ahora solo hay que seguir los pasos e indicar el nombre de la base de datos, el usuario y las contraseñas.

Tener en cuenta que las actualizaciones de APS Conecta Gestión pueden hacerse ejecutando, en -current:

# pkg_add -u -Dsnap

Y en -stable:

# pkg_add -u

Después solo hay que seguir los pasos desde el navegador.

NOTA

Recordar leer siempre todos los README de los paquetes de OpenBSD en:

/usr/local/share/doc/pkg-readmes/

Allí está disponible toda esta información y más.