Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: CI

on:
push:
branches: [ main ]
tags:
- 'v[0-9]+.[0-9]+.[0-9]+**'
jobs:
build:
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest

name: Build and push image
steps:
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v5
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7, linux/arm64/v8
push: true
tags: reply2future/docker-webdav:latest,reply2future/docker-webdav:${{ github.ref_name }}
6 changes: 4 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM debian:10.6-slim
FROM debian:stable-slim

LABEL maintainer "ugeek. ugeekpodcast@gmail.com"
LABEL maintainer "6359152+reply2future@users.noreply.github.com"

ARG UID=${UID:-1000}
ARG GID=${GID:-1000}
Expand All @@ -15,6 +15,8 @@ RUN apt-get update && \
RUN usermod -u $UID www-data && groupmod -g $GID www-data

VOLUME /media
VOLUME /logs

EXPOSE 80

COPY webdav.conf /etc/nginx/conf.d/default.conf
Expand Down
85 changes: 85 additions & 0 deletions README.es.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Servidor webdav partiendo de debian-testing

## Clonar el repositorio

```
git clone https://github.com/reply2future/docker-webdav.git
```

y accedemos al interior de la carpeta:

```
cd docker-webdav
```

## Construir la imagen
```
docker build -t reply2future/webdav:arm .
```

## Ver el número de imagen:
```
docker images
```

## Montar el contenedor

### docker-cli
USERNAME: webdav
PASSWORD: webdav
PUERTO: 80

--restart=unless-stopped: Iniciar cada vez que iniciemos el servidor


```
docker run --name webdav \
--restart=unless-stopped \
-p 80:80 \
-v $HOME/docker-webdav/media:/media \
-v $HOME/docker-webdav/logs:/logs \
-e USERNAME=webdav \
-e PASSWORD=webdav \
-e TZ=Europe/Madrid \
-e UDI=1000 \
-e GID=1000 \
-d reply2future/webdab:arm
```

### docker-compose con traefik y proxy inverso

[Este archivo](/docker-compose.yml) es un ejemplo..

Introduce el comando...
```
docker-compose up -d
```


## Logs

Añadido nuevo registro de logs.

### Ver logs

```
docker exec -it webdav cat /logs/webdav_access.log
```

### Logs en tiempo real

```
docker exec -it webdav cat /logs/webdav_access.log
```



### logs con error
```
docker exec -it webdav /logs/webdav_error.log
```

## Agradecimientos
- Gracias a [Germán Martín](https://github.com/gmag11) por añadir la compatibilidad con clientes Windows 10. [Fork](https://github.com/gmag11/docker-webdav)


116 changes: 30 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,122 +1,66 @@
# Servidor webdav partiendo de debian-testing

## Clonar el repositorio
# Webdav Server based on debian-testing

```
git clone https://github.com/uGeek/docker-nginx-webdav.git
```
## Cloning the repository

y accedemos al interior de la carpeta:
> git clone https://github.com/reply2future/docker-webdav.git

```
cd docker-nginx-webdav
```
and we access the inside of the folder :

## Construir la imagen
```
docker build -t ugeek/webdav:arm .
```
cd docker-webdav

## Ver el número de imagen:
```
## Building the image
docker build -t reply2future/webdav:arm .

## Check the image number:
docker images
```

## Montar el contenedor
## Mounting the container

### docker-cli
USERNAME: webdav
PASSWORD: webdav
PUERTO: 80
PORT: 80

--restart=unless-stopped: Iniciar cada vez que iniciemos el servidor
--restart=unless-stopped: Start each time we start the server


```
```bash
docker run --name webdav \
--restart=unless-stopped \
-p 80:80 \
-v $HOME/docker/webdav:/media \
-v $HOME/docker-webdav/media:/media \
-v $HOME/docker-webdav/logs:/logs \
-e USERNAME=webdav \
-e PASSWORD=webdav \
-e TZ=Europe/Madrid \
-e UDI=1000 \
-e UID=1000 \
-e GID=1000 \
-d ugeek/webdab:arm
-d uge ek/webdab:arm
```

### docker-compose con traefik y proxy inverso
### docker-compose with traefik and reverse proxy

```
version: '2'
services:
webdav:
container_name: webdav
image: ugeek/webdav:arm
ports:
- 80:80
volumes:
- $HOME/docker/webdav:/media
environment:
- USERNAME=webdav
- PASSWORD=webdav
- UID=1000
- GID=1000
- TZ=Europe/Madrid
networks:
- web
labels:
- traefik.backend=webdav
- traefik.frontend.rule=Host:webdav.tu_dominio.duckdns.org
- traefik.docker.network=web
- traefik.port=80
- traefik.enable=true
# Adding in secure headers
- traefik.http.middlewares.securedheaders.headers.forcestsheader=true
- traefik.http.middlewares.securedheaders.headers.sslRedirect=true
- traefik.http.middlewares.securedheaders.headers.STSPreload=true
- traefik.http.middlewares.securedheaders.headers.ContentTypeNosniff=true
- traefik.http.middlewares.securedheaders.headers.BrowserXssFilter=true
- traefik.http.middlewares.securedheaders.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.securedheaders.headers.stsSeconds=63072000
- traefik.http.middlewares.securedheaders.headers.frameDeny=true
- traefik.http.middlewares.securedheaders.headers.browserXssFilter=true
- traefik.http.middlewares.securedheaders.headers.contentTypeNosniff=true
networks:
web:
external: true
```
[this file](/docker-compose.yml) is an example.

Introduce el comando...
```
docker-compose up -d
```
Enter the command...
> docker-compose up -d


## Logs

Añadido nuevo registro de logs.

### Ver logs

```
docker exec -it webdav cat /var/log/nginx/webdav_access.log
```

### Logs en tiempo real
New log record added.

```
docker exec -it webdav cat /var/log/nginx/webdav_access.log
```
### See logs

> docker exec -it webdav cat /logs/webdav_access.log

### Real Time Logs

### logs con error
```
docker exec -it webdav /var/log/nginx/webdav_error.log
```
> docker exec -it webdav cat /logs/webdav_access.log

## Agradecimientos
- Gracias a [Germán Martín](https://github.com/gmag11) por añadir la compatibilidad con clientes Windows 10. [Fork](https://github.com/gmag11/docker-webdav)
### Error Logs

> docker exec -it webdav /logs/webdav_error.log

## Acknowledgements
- Thanks to [Germán Martín](https://github.com/gmag11) for adding compatibility with Windows 10 clients. [Fork](https://github.com/gmag11/docker-webdav)
5 changes: 3 additions & 2 deletions docker-compose-build.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
version: '2'
version: '3'
services:
webdav:
container_name: webdav
build: .
ports:
- "80:80"
volumes:
- "$HOME/docker/webdav:/media"
- "$HOME/docker-webdav/media:/media"
- "$HOME/docker-webdav/logs:/logs"
environment:
- USERNAME=webdav
- PASSWORD=webdav
Expand Down
7 changes: 4 additions & 3 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
version: '2'
version: '3'
services:
webdav:
container_name: webdav
image: ugeek/webdav:arm
image: reply2future/webdav
ports:
- 80:80
volumes:
- $HOME/docker/webdav:/media
- "$HOME/docker-webdav/media:/media"
- "$HOME/docker-webdav/logs:/logs"
environment:
- USERNAME=webdav
- PASSWORD=webdav
Expand Down
25 changes: 21 additions & 4 deletions webdav.conf
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
dav_ext_lock_zone zone=a:10m;

map $http_destination $dest_path {
~^(?<xscheme>https?)://[^/]+(?<xpath>/.*)$ $xpath;
}

server {
#server_name webdav.mashnp.sk;
set $webdav_root "/media/";
set $webdav_root "/media";
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/htpasswd;
dav_ext_lock zone=a;


location / {

root $webdav_root;
Expand All @@ -15,8 +20,8 @@ server {
error_page 597 = @copy_move_handler;
open_file_cache off;

access_log /var/log/nginx/webdav_access.log;
error_log /var/log/nginx/webdav_error.log debug;
access_log /logs/webdav_access.log;
error_log /logs/webdav_error.log debug;

send_timeout 3600;
client_body_timeout 3600;
Expand Down Expand Up @@ -59,7 +64,15 @@ server {
autoindex_exact_size on;
autoindex_localtime on;

# Add CORS headers
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization' always;

if ($request_method = OPTIONS) {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization' always;
add_header Allow 'OPTIONS, GET, HEAD, POST, PUT, MKCOL, MOVE, COPY, DELETE, PROPFIND, PROPPATCH, LOCK, UNLOCK';
add_header DAV '1, 2';
return 200;
Expand All @@ -85,12 +98,16 @@ server {
root $webdav_root;
dav_methods DELETE;
}


location @copy_move_handler {
internal;

open_file_cache off;
more_set_input_headers 'Destination: $dest_path';

if (-d $webdav_root/$uri) { # Microsoft specific handle: Add trailing slash to dirs.
more_set_input_headers 'Destination: $http_destination/';
# more_set_input_headers 'Destination: $http_destination/';
rewrite ^(.*[^/])$ $1/ break;
}
root $webdav_root;
Expand Down