mirror of
https://github.com/pldubouilh/gossa.git
synced 2026-08-28 12:56:35 -04:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd6cb90e9d | ||
|
|
682e76da1f | ||
|
|
43e8e36ea2 | ||
|
|
56f418bbff | ||
|
|
c7e92cb730 | ||
|
|
5ea4838d19 | ||
|
|
50b9bc77ba | ||
|
|
2cd2753480 | ||
|
|
a39424159d | ||
|
|
32b64da0e6 | ||
|
|
2565dcca13 | ||
|
|
39611d2df3 | ||
|
|
55e729e434 |
@@ -5,6 +5,9 @@ build:
|
||||
CGO_ENABLED=0 go build gossa.go
|
||||
rm gossa.go
|
||||
|
||||
install:
|
||||
sudo cp gossa /usr/local/bin
|
||||
|
||||
run:
|
||||
./gossa -verb=true test-fixture
|
||||
|
||||
|
||||
+1
-1
Submodule gossa-ui updated: 02cecdcaae...a88fc12cf5
@@ -41,7 +41,7 @@ release images are pushed to [dockerhub](https://hub.docker.com/r/pldubouilh/gos
|
||||
% sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 pldubouilh/gossa
|
||||
```
|
||||
|
||||
in a do-one-thing-well mindset, HTTPS and authentication has been left to middlewares and proxies. for instance [caddy](https://caddyserver.com/) handles this very well - have a look at this small [caddy config](https://github.com/pldubouilh/gossa/blob/master/support/Caddyfile) with authentication and option for HTTPS that works along with gossa.
|
||||
in a do-one-thing-well mindset, HTTPS and authentication has been left to middlewares and proxies. [sample caddy configs](https://github.com/pldubouilh/gossa/blob/master/support/) are available to quickly setup multi users setups along with https.
|
||||
|
||||
### shortcuts
|
||||
the default UI is fully usable by through keyboard/UI shortcuts - press `Ctrl/Cmd + h` to see them all.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
# Caddy config
|
||||
# to enable https just set a valid domain (e.g. mydomain.com) instead of :8080 - how simple !
|
||||
# authentication has been setup with 2 users, alice and bob
|
||||
|
||||
:8080
|
||||
basicauth / alice paul
|
||||
basicauth / bob dylan
|
||||
proxy / 127.0.0.1:8001
|
||||
@@ -3,9 +3,9 @@ COPY . /gossaSrc
|
||||
RUN cd /gossaSrc && make
|
||||
|
||||
FROM alpine
|
||||
ENV UID="1000" GID="1000" HOST="0.0.0.0" PORT="8001" PREFIX="/" FOLLOW_SYMLINKS="false" SKIP_HIDDEN_FILES="true" DATADIR="/shared"
|
||||
ENV UID="1000" GID="1000" HOST="0.0.0.0" PORT="8001" PREFIX="/" FOLLOW_SYMLINKS="false" SKIP_HIDDEN_FILES="true" DATADIR="/shared" READONLY="false"
|
||||
EXPOSE 8001
|
||||
RUN apk add --no-cache su-exec
|
||||
COPY --from=builder /gossaSrc/gossa /gossa
|
||||
RUN echo -e 'exec su-exec ${UID}:${GID} /gossa -h ${HOST} -p ${PORT} -k=${SKIP_HIDDEN_FILES} --symlinks=${FOLLOW_SYMLINKS} --prefix=${PREFIX} ${DATADIR}'>> /start.sh
|
||||
RUN echo -e 'exec su-exec ${UID}:${GID} /gossa -h ${HOST} -p ${PORT} -k=${SKIP_HIDDEN_FILES} -ro=${READONLY} --symlinks=${FOLLOW_SYMLINKS} --prefix=${PREFIX} ${DATADIR}'>> /start.sh
|
||||
ENTRYPOINT [ "sh", "/start.sh" ]
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
FROM pldubouilh/gossa
|
||||
|
||||
RUN apk update && apk add curl ca-certificates caddy
|
||||
|
||||
ENV UID="1000" GID="1000" HOST="127.0.0.1" PORT="8001" PREFIX="/" FOLLOW_SYMLINKS="false" SKIP_HIDDEN_FILES="true" DATADIR="/shared"
|
||||
EXPOSE 443
|
||||
RUN echo -e 'exec su-exec ${UID}:${GID} /gossa -h ${HOST} -p ${PORT} -k=${SKIP_HIDDEN_FILES} --symlinks=${FOLLOW_SYMLINKS} --prefix=${PREFIX} ${DATADIR} & \n caddy' > /start.sh
|
||||
ENTRYPOINT [ "sh", "/start.sh" ]
|
||||
+90
-7
@@ -1,27 +1,110 @@
|
||||
## docker
|
||||
|
||||
the master branch is automatically built and pushed to [dockerhub](https://hub.docker.com/r/pldubouilh/gossa) under `pldubouilh/gossa`.
|
||||
|
||||
```sh
|
||||
# pull from dockerhub and run
|
||||
% mkdir ~/LocalDirToShare
|
||||
% sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 pldubouilh/gossa
|
||||
|
||||
# options are settable through env. variabes. all the options are the build.Dockerfile
|
||||
% sudo docker run -e PREFIX="/gossa/" -v ~/LocalDirToShare:/shared -p 8001:8001 pldubouilh/gossa
|
||||
```
|
||||
|
||||
if you prefer building the image yourself :
|
||||
|
||||
```sh
|
||||
# build gossa within a build container, needs to be ran within the sources, ../ from here, and run
|
||||
% mkdir ~/LocalDirToShare
|
||||
% docker build -t gossa -f support/build.Dockerfile .
|
||||
% sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 gossa
|
||||
```
|
||||
|
||||
the options are settable through environment variables that can be passed starting off the docker image.
|
||||
a docker-compose example image is also provided. running docker compose should be straightforward : `docker-compose up .` have a look in `docker-compose.yml` for further configuration.
|
||||
|
||||
a fancy docker image using [Caddy](https://caddyserver.com/) is also provided. have a look at the simple config file `Caddyfile`, it shows how to use http basic authentication, and automatic TLS for hands-free https 🎉
|
||||
## multi-account setup
|
||||
|
||||
authentication / user routing has been left out of the design of gossa, as simple tools are already available for this purpose. [caddy](https://caddyserver.com/v1/) is used here as an example, but other proxy can be used in a similar fashion.
|
||||
|
||||
### example 1 root, multiple read-only users
|
||||
|
||||
this sample caddy config will
|
||||
+ enable https on the domain myserver.com
|
||||
+ password protect the access
|
||||
+ route the root user requests to 1 gossa instance
|
||||
+ route user1 and user2 requests to a readonly gossa instance
|
||||
|
||||
```sh
|
||||
# checkout the caddy config, build, and run docker image
|
||||
% vim caddy.Dockerfile
|
||||
% docker build -t gossa-caddy -f caddy.Dockerfile .
|
||||
% sudo docker run -v ~/LocalDirToShare:/shared -v `pwd`/Caddyfile:/Caddyfile --net=host gossa-caddy
|
||||
myserver.com
|
||||
|
||||
# proxy regular and read only instance
|
||||
proxy / 127.0.0.1:8001
|
||||
proxy /ro 127.0.0.1:8002 { without /ro }
|
||||
|
||||
# reroute non-root user to read-only
|
||||
# cm9... is the output of `printf "root:password" | base64`
|
||||
rewrite {
|
||||
if {>Authorization} not "Basic cm9vdDpwYXNzd29yZA=="
|
||||
to /ro/{path}
|
||||
}
|
||||
|
||||
# gate access
|
||||
basicauth / root password
|
||||
basicauth / ro_user1 passworduser1
|
||||
basicauth / ro_user2 passworduser2
|
||||
```
|
||||
|
||||
a docker-compose example image is also provided. running docker compose should be straightforward : `docker-compose up .` have a look in `docker-compose.yml` for further configuration.
|
||||
then simply start the 2 gossa instances, and caddy
|
||||
|
||||
```sh
|
||||
# start an instance in readonly
|
||||
% ./gossa -ro=true -p 8002 ~/folder &
|
||||
|
||||
# start an instance with access to hidden files
|
||||
% ./gossa -k=false -p 8001 ~/folder &
|
||||
|
||||
# start caddy
|
||||
% ./caddy
|
||||
```
|
||||
|
||||
### example 2 users on 2 different folders
|
||||
|
||||
this sample caddy config will
|
||||
+ enable https on the domain myserver.com
|
||||
+ password protect the access
|
||||
+ route user1 to own folder
|
||||
+ route user2 to own folder
|
||||
+ share a folder between 2 users with a symlink
|
||||
|
||||
```sh
|
||||
myserver.com
|
||||
|
||||
proxy /user1 127.0.0.1:8001 { without /user1 }
|
||||
proxy /user2 127.0.0.1:8002 { without /user2 }
|
||||
|
||||
basicauth / user1 passworduser1
|
||||
basicauth / user2 passworduser2
|
||||
|
||||
rewrite {
|
||||
if {>Authorization} is "Basic dXNlcjE6cGFzc3dvcmR1c2VyMQ=="
|
||||
to /user1/{path}
|
||||
}
|
||||
|
||||
rewrite {
|
||||
if {>Authorization} is "Basic dXNlcjI6cGFzc3dvcmR1c2VyMg=="
|
||||
to /user2/{path}
|
||||
}
|
||||
```
|
||||
|
||||
start 2 gossa instances, and caddy
|
||||
|
||||
```sh
|
||||
# create symlink to share folder between 2 users
|
||||
% ln -s /path/shared test/user1
|
||||
% ln -s /path/shared test/user2
|
||||
|
||||
# start gossa & caddy
|
||||
% ./gossa -p 8001 -symlinks=true test/user1 &
|
||||
% ./gossa -p 8002 -symlinks=true test/user2 &
|
||||
% ./caddy
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user