mirror of
https://github.com/pldubouilh/gossa.git
synced 2026-08-31 06:16:54 -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
|
CGO_ENABLED=0 go build gossa.go
|
||||||
rm gossa.go
|
rm gossa.go
|
||||||
|
|
||||||
|
install:
|
||||||
|
sudo cp gossa /usr/local/bin
|
||||||
|
|
||||||
run:
|
run:
|
||||||
./gossa -verb=true test-fixture
|
./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
|
% 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
|
### shortcuts
|
||||||
the default UI is fully usable by through keyboard/UI shortcuts - press `Ctrl/Cmd + h` to see them all.
|
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
|
RUN cd /gossaSrc && make
|
||||||
|
|
||||||
FROM alpine
|
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
|
EXPOSE 8001
|
||||||
RUN apk add --no-cache su-exec
|
RUN apk add --no-cache su-exec
|
||||||
COPY --from=builder /gossaSrc/gossa /gossa
|
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" ]
|
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`.
|
the master branch is automatically built and pushed to [dockerhub](https://hub.docker.com/r/pldubouilh/gossa) under `pldubouilh/gossa`.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# pull from dockerhub and run
|
# pull from dockerhub and run
|
||||||
|
% mkdir ~/LocalDirToShare
|
||||||
% sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 pldubouilh/gossa
|
% 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 :
|
if you prefer building the image yourself :
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# build gossa within a build container, needs to be ran within the sources, ../ from here, and run
|
# 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 .
|
% docker build -t gossa -f support/build.Dockerfile .
|
||||||
% sudo docker run -v ~/LocalDirToShare:/shared -p 8001:8001 gossa
|
% 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
|
```sh
|
||||||
# checkout the caddy config, build, and run docker image
|
myserver.com
|
||||||
% vim caddy.Dockerfile
|
|
||||||
% docker build -t gossa-caddy -f caddy.Dockerfile .
|
# proxy regular and read only instance
|
||||||
% sudo docker run -v ~/LocalDirToShare:/shared -v `pwd`/Caddyfile:/Caddyfile --net=host gossa-caddy
|
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