Cambios para el documento Instalacion (docker)

Última modificación por dFa el 2025/02/24 10:01

Desde la versión 5.1
editado por dFa
el 2025/02/22 09:31
Cambiar el comentario: No hay comentario para esta versión
Hasta la versión 20.3
editado por dFa
el 2025/02/22 15:35
Cambiar el comentario: No hay comentario para esta versión

Resumen

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:1740216587698-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