Cambios para el documento Instalacion (docker)
Última modificación por dFa el 2025/02/24 10:01
Resumen
-
Propiedades de página (1 modificado, 0 añadido, 0 eliminado)
-
Adjuntos (0 modificado, 4 añadido, 0 eliminado)
Detalles
- Propiedades de página
-
- Contenido
-
... ... @@ -74,6 +74,11 @@ 74 74 MYSQL_PASSWORD: Ko5b0sq977j1saaCQ3SD55 75 75 REDIS_HOST: redis 76 76 PHP_UPLOAD_LIMIT: 0 77 + command: > 78 + sh -c "chown -R www-data:www-data /var/nextcloud && 79 + chmod -R 770 /var/nextcloud && 80 + exec /entrypoint.sh php-fpm" 81 + 77 77 web: 78 78 image: nginx 79 79 container_name: nextcloud-web ... ... @@ -113,18 +113,283 @@ 113 113 114 114 Desplegamos los contenedores: 115 115 116 -[[image:1740216 587698-323.png]]121 +[[image:1740216653242-590.png]] 117 117 123 +Y vemos que se han creado los volumenes correctamente: 118 118 125 +[[image:1740216641833-376.png]] 119 119 120 - 121 -))) 127 +== Configuración == 122 122 129 +Con los volumenes creados, todavía nextcloud no es accesible, dado que debemos configurar tanto el config.php como como el nginx.conf. 123 123 131 +=== nginx.conf === 124 124 133 +El fichero nginx.conf se encuentra en el volumen nextcloud_nginx_conf. Realizamos previamente un backup y reemplazamos por el siguiente: 125 125 126 -(% class="col-xs-12 col-sm-4" %) 127 -((( 135 +{{code language="yaml"}} 136 +worker_processes auto; 137 + 138 +error_log /var/log/nginx/error.log warn; 139 +pid /var/run/nginx.pid; 140 + 141 +events { 142 + worker_connections 1024; 143 +} 144 + 145 +http { 146 + include mime.types; 147 + default_type application/octet-stream; 148 + types { 149 + text/javascript mjs; 150 + application/wasm wasm; 151 + } 152 + 153 + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 154 + '$status $body_bytes_sent "$http_referer" ' 155 + '"$http_user_agent" "$http_x_forwarded_for"'; 156 + 157 + access_log /var/log/nginx/access.log main; 158 + 159 + sendfile on; 160 + keepalive_timeout 65; 161 + 162 + # Define asset_immutable variable properly 163 + map $arg_v $asset_immutable { 164 + default ""; 165 + "" ", immutable"; 166 + } 167 + 168 + upstream php-handler { 169 + server app:9000; 170 + } 171 + 172 + server { 173 + listen 80; 174 + 175 + client_max_body_size 512M; 176 + client_body_timeout 300s; 177 + fastcgi_buffers 64 4K; 178 + 179 + client_body_buffer_size 512k; 180 + 181 + gzip on; 182 + gzip_vary on; 183 + gzip_comp_level 4; 184 + gzip_min_length 256; 185 + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; 186 + gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; 187 + 188 + add_header Referrer-Policy "no-referrer" always; 189 + add_header X-Content-Type-Options "nosniff" always; 190 + add_header X-Frame-Options "SAMEORIGIN" always; 191 + add_header X-Permitted-Cross-Domain-Policies "none" always; 192 + add_header X-Robots-Tag "noindex, nofollow" always; 193 + add_header X-XSS-Protection "1; mode=block" always; 194 + 195 + fastcgi_hide_header X-Powered-By; 196 + 197 + root /var/www/html; 198 + 199 + index index.php index.html /index.php$request_uri; 200 + 201 + location = / { 202 + if ( $http_user_agent ~ ^DavClnt ) { 203 + return 302 /remote.php/webdav/$is_args$args; 204 + } 205 + } 206 + 207 + location = /robots.txt { 208 + allow all; 209 + log_not_found off; 210 + access_log off; 211 + } 212 + 213 + location ^~ /.well-known { 214 + location = /.well-known/carddav { return 301 /remote.php/dav/; } 215 + location = /.well-known/caldav { return 301 /remote.php/dav/; } 216 + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } 217 + location /.well-known/pki-validation { try_files $uri $uri/ =404; } 218 + return 301 /index.php$request_uri; 219 + } 220 + 221 + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } 222 + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } 223 + 224 + location ~ \.php(?:$|/) { 225 + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri; 226 + 227 + fastcgi_split_path_info ^(.+?\.php)(/.*)$; 228 + set $path_info $fastcgi_path_info; 229 + 230 + try_files $fastcgi_script_name =404; 231 + 232 + include fastcgi_params; 233 + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 234 + fastcgi_param PATH_INFO $path_info; 235 + fastcgi_param HTTPS on; 236 + 237 + fastcgi_param modHeadersAvailable true; 238 + fastcgi_param front_controller_active true; 239 + fastcgi_pass php-handler; 240 + 241 + fastcgi_intercept_errors on; 242 + fastcgi_request_buffering off; 243 + 244 + fastcgi_max_temp_file_size 0; 245 + } 246 + 247 + location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ { 248 + try_files $uri /index.php$request_uri; 249 + add_header Cache-Control "public, max-age=15778463$asset_immutable"; 250 + access_log off; 251 + } 252 + 253 + location ~ \.wasm$ { 254 + default_type application/wasm; 255 + } 256 + 257 + location /remote { 258 + return 301 /remote.php$request_uri; 259 + } 260 + 261 + location / { 262 + try_files $uri $uri/ /index.php$request_uri; 263 + } 264 + } 265 +} 266 +{{/code}} 267 + 268 +Reiniciamos los contenedores para que apliquen todos los cambios y comprobamos si funciona correctamente accediendo a través del puerto expuesto, en este caso el 8080: 269 + 270 +* [[http:~~/~~/ipservidor:8080>>http://ipservidor:8080]] 271 + 272 +[[image:1740220925385-402.png]] 273 + 274 +Indicamos un usuario y contraseña y comenzará la instalación. 275 + 276 +=== config.php === 277 + 278 +Una vez realziada la instralación, hacemos lo mismo con el fichero config.php que se encuentra en el volumen app dentro del directorio config: 279 + 280 +{{code language="php"}} 281 +<?php 282 +$CONFIG = array ( 283 + 'memcache.local' => '\\OC\\Memcache\\APCu', 284 + 'apps_paths' => 285 + array ( 286 + 0 => 287 + array ( 288 + 'path' => '/var/www/html/apps', 289 + 'url' => '/apps', 290 + 'writable' => true, 291 + ), 292 + 1 => 293 + array ( 294 + 'path' => '/var/www/html/custom_apps', 295 + 'url' => '/custom_apps', 296 + 'writable' => true, 297 + ), 298 + ), 299 + 'memcache.distributed' => '\\OC\\Memcache\\Redis', 300 + 'memcache.locking' => '\\OC\\Memcache\\Redis', 301 + 'redis' => 302 + array ( 303 + 'host' => 'redis', 304 + 'password' => '', 305 + 'port' => 6379, 306 + ), 307 + 'upgrade.disable-web' => true, 308 + 'instanceid' => 'ocxuwrcpcats', 309 + 'passwordsalt' => 'bFuPjx3NMpliQCtY729Uob2SRp19xe', 310 + 'secret' => 'eFMG77LAdbjw6oPSJM7hL/IDPBnP3qDxE7xlX6/uPMOvQ/kG', 311 + 'trusted_domains' => 312 + array ( 313 + 0 => '10.100.200.35:8080', 314 + 1 => 'dfacloud.ddns.net', 315 + 316 + ), 317 + 'datadirectory' => '/var/nextcloud/data', 318 + 'dbtype' => 'mysql', 319 + 'version' => '30.0.6.2', 320 + 'overwrite.cli.url' => 'https://dfacloud.ddns.net', 321 + 'dbname' => 'nextcloud', 322 + 'dbhost' => 'db', 323 + 'dbport' => '', 324 + 'dbtableprefix' => 'oc_', 325 + 'mysql.utf8mb4' => true, 326 + 'dbuser' => 'nextcloud', 327 + 'dbpassword' => 'Ko5b0sq977j1saaCQ3SD55', 328 + 'installed' => true, 329 +); 330 +{{/code}} 331 + 332 +En este fichero php tendremos que tener en cuenta modificar los valores nuestra dirección ip:puerto y nuestra dns en consecuencia. 333 + 334 +Tambien debemos tener en cuenta la directiva: 335 + 336 +* 'datadirectory' => '/var/nextcloud/data', 337 + 338 +Dado que indica el directorio de datos dentro del contenedor. 339 + 340 +=== Permisos === 341 + 342 +Es importante tener en cuenta los permisos de los directorios, sobre todo los directorios de datos y perfiles de usuarios. 343 + 344 +En nuestro caso hemos montado el perfil de usuario en un directorio distinto dado que es una recomendación de seguridad de nextcloud, y además hemos expuesto nuestro disco /datos montando en el host anfitrión al contenedor, por lo que es posible que tengamos que revisar los permisos. 345 + 346 +El usuario y grupo desde el host anfitrión en nuestro caso son: 347 + 348 +* user: 33 (www-data) 349 +* group: tape (www-data) 350 + 351 +Y deben contener permisos 770 352 + 353 +Hemos ajustado el compose para que se adapten estos permisos de forma automática, no obstante es importante revisarles si nextcloud indica algún problema de permisos. 354 + 355 +== Acceso == 356 + 357 + 358 += EXTRA = 359 + 360 +== Compartir recurso que se usa en docker por smb == 361 + 362 +Si vamos a compartir un directorio de datos usado por docker tambien a través de smb, es importante tener en cuenta los permisos. 363 + 364 +Para ello añadiremos nuestro usuario de smb al grupo tape e indicaremos en el recurso smb como usuario valido dicho grupo. 365 + 366 +Para añadir el usuario al grupo tape: 367 + 368 +{{code language="bash"}} 369 +usermod -a -G tape usuario 370 +{{/code}} 371 + 372 +Para configurar el grupo en smb: 373 + 374 +{{code language="bash"}} 375 +[datos] 376 + path = /datos/dFa 377 + browsable = yes 378 + writable = yes 379 + valid users = @tape 380 + #valid users = dFa 381 + read only = no 382 + force create mode = 0777 383 + force directory mode = 0777 384 + guest ok = no 385 +{{/code}} 386 + 387 +De esta manera tanto docker como el usuario de smb que hemos añadido al grupo tape tendrá permisos sobre el recurso. 388 + 389 +También para evitar problemas, es importante asignar ACL's para que el recurso siempre tenga los mismos permisos cuando se añade un nuevo fichero y además aseguramos que el contenido ya existente se encuentra en un estado correcto en cuanto a los mismos: 390 + 391 +{{code language="bash"}} 392 +setfacl -R -m g:tape:rwx /datos/ 393 +setfacl -R -d -m g:tape:rwx /datos/ 394 +{{/code}} 395 + 396 + 397 + 128 128 129 129 ))) 130 130 )))
- 1740216603834-462.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.dFa - Tamaño
-
... ... @@ -1,0 +1,1 @@ 1 +21.8 KB - Contenido
- 1740216641833-376.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.dFa - Tamaño
-
... ... @@ -1,0 +1,1 @@ 1 +4.6 KB - Contenido
- 1740216653242-590.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.dFa - Tamaño
-
... ... @@ -1,0 +1,1 @@ 1 +19.9 KB - Contenido
- 1740220925385-402.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.dFa - Tamaño
-
... ... @@ -1,0 +1,1 @@ 1 +173.2 KB - Contenido