optimized rclone http server
This commit is contained in:
parent
adc142cec8
commit
95d4db2fff
3 changed files with 69 additions and 4 deletions
|
|
@ -27,6 +27,7 @@ $ docker load < $(nix-build nix/docker.nix)
|
||||||
| `FEDERATE_DRIVE_PORT` | `3215` | specify default library where user-files are uploaded (regular dir or mounted rclone path) |
|
| `FEDERATE_DRIVE_PORT` | `3215` | specify default library where user-files are uploaded (regular dir or mounted rclone path) |
|
||||||
| `FEDERATE_DRIVE_USER` | `` | specify HTTP AUTH credentials (`user` e.g.) for restricted sharing |
|
| `FEDERATE_DRIVE_USER` | `` | specify HTTP AUTH credentials (`user` e.g.) for restricted sharing |
|
||||||
| `FEDERATE_DRIVE_PW` | `` | specify HTTP AUTH credentials (`pass` e.g.) for restricted sharing |
|
| `FEDERATE_DRIVE_PW` | `` | specify HTTP AUTH credentials (`pass` e.g.) for restricted sharing |
|
||||||
|
| `FEDERATE_DRIVE_CACHE`| `1m0s` | specify interval to re-check all models/directories |
|
||||||
|
|
||||||
# Default database / admin login
|
# Default database / admin login
|
||||||
|
|
||||||
|
|
@ -41,7 +42,7 @@ $ docker load < $(nix-build nix/docker.nix)
|
||||||
The server-image will boot `manyfold/cli/manyfold.sh boot` and check for directory `/manyfold` (in the container).
|
The server-image will boot `manyfold/cli/manyfold.sh boot` and check for directory `/manyfold` (in the container).
|
||||||
When found, it uses the files in there instead (`/manyfold/usr/src/app/public/404.html` instead of `/usr/src/app/public/404.html` e.g.).
|
When found, it uses the files in there instead (`/manyfold/usr/src/app/public/404.html` instead of `/usr/src/app/public/404.html` e.g.).
|
||||||
|
|
||||||
# Federated (remote) network-drives
|
# Federated drives (inbound)
|
||||||
|
|
||||||
> Thanks to [rclone](https://rclone.org) network-drives automatically show up as manyfold libraries.
|
> Thanks to [rclone](https://rclone.org) network-drives automatically show up as manyfold libraries.
|
||||||
|
|
||||||
|
|
@ -60,12 +61,71 @@ Your drives will get automagically mounted and added to the database automagical
|
||||||
|
|
||||||
TIP: use **alphanumeric** names for rclone remotes (manyfold libraries choke on dot- or other special-characters)
|
TIP: use **alphanumeric** names for rclone remotes (manyfold libraries choke on dot- or other special-characters)
|
||||||
|
|
||||||
**Sharing [federating] a drive with other instances**
|
|
||||||
|
|
||||||
By default environment-flag `FEDERATE_DRIVE_PATH` will share path `/mnt/models` as an open web directory.
|
By default environment-flag `FEDERATE_DRIVE_PATH` will share path `/mnt/models` as an open web directory.
|
||||||
This means it can be added as remote by other instances.
|
This means it can be added as remote by other instances.
|
||||||
See the environment-flags for more options.
|
See the environment-flags for more options.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>**Example connect to other XRForge instance**</summary>
|
||||||
|
<br>
|
||||||
|
```
|
||||||
|
$ rclone config
|
||||||
|
Current remotes:
|
||||||
|
|
||||||
|
Name Type
|
||||||
|
==== ====
|
||||||
|
|
||||||
|
e) Edit existing remote
|
||||||
|
n) New remote
|
||||||
|
d) Delete remote
|
||||||
|
r) Rename remote
|
||||||
|
c) Copy remote
|
||||||
|
s) Set configuration password
|
||||||
|
q) Quit config
|
||||||
|
e/n/d/r/c/s/q> n
|
||||||
|
|
||||||
|
Enter name for new remote.
|
||||||
|
name> xrforge_instanceC
|
||||||
|
|
||||||
|
Option Storage.
|
||||||
|
Type of storage to configure.
|
||||||
|
Choose a number from below, or type in your own value.
|
||||||
|
|
||||||
|
...
|
||||||
|
22 / HTTP
|
||||||
|
...
|
||||||
|
|
||||||
|
Storage> 22
|
||||||
|
|
||||||
|
Option url.
|
||||||
|
URL of HTTP host to connect to.
|
||||||
|
E.g. "https://example.com", or "https://user:pass@example.com" to use a username and password.
|
||||||
|
Enter a value.
|
||||||
|
url> http://url-to-another-xrforge-instance.com
|
||||||
|
|
||||||
|
Option no_escape.
|
||||||
|
Do not escape URL metacharacters in path names.
|
||||||
|
Enter a boolean value (true or false). Press Enter for the default (false).
|
||||||
|
no_escape>
|
||||||
|
|
||||||
|
Edit advanced config?
|
||||||
|
y) Yes
|
||||||
|
n) No (default)
|
||||||
|
y/n> n
|
||||||
|
|
||||||
|
Configuration complete.
|
||||||
|
Options:
|
||||||
|
- type: http
|
||||||
|
- url: http://localhost:8791
|
||||||
|
Keep this "test" remote?
|
||||||
|
y) Yes this is OK (default)
|
||||||
|
e) Edit this remote
|
||||||
|
d) Delete this remote
|
||||||
|
y/e/d> y
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
# Unixy event hooks
|
# Unixy event hooks
|
||||||
|
|
||||||
Until WebEvents [will get implemented on a REST-level in manyfold](https://github.com/orgs/manyfold3d/projects/4/views/1?filterQuery=Pub&pane=issue&itemId=108834509&issue=manyfold3d%7Cmanyfold%7C4097) Things like boot-phase, scheduler and file-changes can be reacted up via the `/root/hook.d` directory:
|
Until WebEvents [will get implemented on a REST-level in manyfold](https://github.com/orgs/manyfold3d/projects/4/views/1?filterQuery=Pub&pane=issue&itemId=108834509&issue=manyfold3d%7Cmanyfold%7C4097) Things like boot-phase, scheduler and file-changes can be reacted up via the `/root/hook.d` directory:
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ run(){
|
||||||
-e MULTIUSER=enabled \
|
-e MULTIUSER=enabled \
|
||||||
-e FEDERATION=enabled \
|
-e FEDERATION=enabled \
|
||||||
-e THEME=vapor \
|
-e THEME=vapor \
|
||||||
|
-e FEDERATE_DRIVE_CACHE=5s \
|
||||||
--cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse \
|
--cap-add SYS_ADMIN --security-opt apparmor:unconfined --device /dev/fuse \
|
||||||
xrforge
|
xrforge
|
||||||
#ghcr.io/manyfold3d/manyfold-solo:latest
|
#ghcr.io/manyfold3d/manyfold-solo:latest
|
||||||
|
|
@ -172,6 +173,7 @@ boot(){
|
||||||
rclone_mount
|
rclone_mount
|
||||||
set_upload_path
|
set_upload_path
|
||||||
start_hook_daemon
|
start_hook_daemon
|
||||||
|
hook boot # emit unixy hook-event (/root/hook.d/boot/* scripts)
|
||||||
|
|
||||||
exec "$@" # exec prevents error 's6-overlay-suexec: fatal: can only run as pid 1'
|
exec "$@" # exec prevents error 's6-overlay-suexec: fatal: can only run as pid 1'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -x
|
|
||||||
test -z "$FEDERATE_DRIVE_PATH" && FEDERATE_DRIVE_PATH=/mnt/models
|
test -z "$FEDERATE_DRIVE_PATH" && FEDERATE_DRIVE_PATH=/mnt/models
|
||||||
test -z "$FEDERATE_DRIVE_PORT" && FEDERATE_DRIVE_PORT=3215
|
test -z "$FEDERATE_DRIVE_PORT" && FEDERATE_DRIVE_PORT=3215
|
||||||
|
test -z "$FEDERATE_DRIVE_CACHE" && FEDERATE_DRIVE_CACHE=1m0s
|
||||||
|
|
||||||
test "$FEDERATE_DRIVE_PATH" = 0 && exit 0 # nothing to do (disabled)
|
test "$FEDERATE_DRIVE_PATH" = 0 && exit 0 # nothing to do (disabled)
|
||||||
|
|
||||||
|
|
@ -9,4 +9,7 @@ test -n "$FEDERATE_DRIVE_USER" && test -m "$FEDERATE_DRIVE_PW" && {
|
||||||
AUTH="--user $FEDERATE_DRIVE_USER --pass $FEDERATE_DRIVE_PW"
|
AUTH="--user $FEDERATE_DRIVE_USER --pass $FEDERATE_DRIVE_PW"
|
||||||
}
|
}
|
||||||
|
|
||||||
rclone serve http --addr 0.0.0.0:$FEDERATE_DRIVE_PORT ${AUTH} $FEDERATE_DRIVE_PATH &
|
set -x
|
||||||
|
rclone serve http \
|
||||||
|
--poll-interval $FEDERATE_DRIVE_CACHE \
|
||||||
|
--addr 0.0.0.0:$FEDERATE_DRIVE_PORT ${AUTH} $FEDERATE_DRIVE_PATH &> /var/log/rclone.log &
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue