mirror of
https://github.com/zoriya/flood.git
synced 2025-12-06 07:16:18 +00:00
dist: initial dist files for alpine, archlinux and debian
This commit is contained in:
66
distribution/README.md
Normal file
66
distribution/README.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Distributing Flood
|
||||
|
||||
This directory contains files related to distribution of Flood. Some are being used by continuous integration scripts of this project to release a certain version of Flood. Some are merely examples that have been created to make it easier for potential contributors to maintain a package of Flood for their distributions.
|
||||
|
||||
In general, Flood has two release channels: `master` and `latest`:
|
||||
|
||||
- `master` (rolling) channel is handled by CI scripts that are triggered whenever there is a push to `master` branch.
|
||||
- `latest` (release) channel is versioned (eg. `4.0.0`), in accordance with [semver](https://semver.org/).
|
||||
|
||||
### npm (Node Package Manager)
|
||||
|
||||
`npm` is the primary method of distribution. Flood is published to two packages:
|
||||
|
||||
- `master` -> [npmjs.com/@jesec/flood](https://www.npmjs.com/@jesec/flood)
|
||||
- `latest` -> [npmjs.com/flood](https://www.npmjs.com/flood)
|
||||
|
||||
Other distribution methods may rely on builds published on `npm`.
|
||||
|
||||
### Standalone executables
|
||||
|
||||
Flood uses [pkg](https://github.com/jesec/pkg) to generate self-contained executables that bundles Flood with Node.js runtime. Generated executables are published to two locations:
|
||||
|
||||
- `master` -> [Github Actions](https://github.com/jesec/flood/actions?query=workflow%3A%22Publish+rolling+build%22) ([permalink via nightly.link](https://nightly.link/jesec/flood/workflows/publish-rolling/master))
|
||||
- `latest` -> [Github Releases](https://github.com/jesec/flood/releases)
|
||||
|
||||
Other distribution methods may rely on generated standalone executables.
|
||||
|
||||
### Containers
|
||||
|
||||
`containers` folder hosts files required to build a container image. Currently there are three variants that are published in two stages:
|
||||
|
||||
**Variants:**
|
||||
|
||||
- Default (`latest`, `master`, versioned tags): Node.js Current on Alpine Linux (parent image: `node:alpine`)
|
||||
- Debugging (`*-dbg`): Node.js Current on Alpine Linux (parent image: `node:alpine`)
|
||||
- Contains full sources (not minimized) and development dependencies
|
||||
- Distroless (`*-distroless`): Node.js Active LTS (no parent image)
|
||||
- Contains only `flood` and its runtime dependencies
|
||||
- No shell, no package manager, no libc, no coreutils
|
||||
|
||||
**Stages:**
|
||||
|
||||
- `flood` ([jesec/flood](https://hub.docker.com/r/jesec/flood))
|
||||
- `rtorrent-flood` ([jesec/rtorrent-flood](https://hub.docker.com/r/jesec/rtorrent-flood))
|
||||
- Bundles [rtorrent](https://hub.docker.com/r/jesec/rtorrent)
|
||||
|
||||
### Misc
|
||||
|
||||
`shared` folder hosts files that may be useful in a package, in addition to:
|
||||
|
||||
```
|
||||
CHANGELOG.md
|
||||
LICENSE
|
||||
README.md
|
||||
SECURITY.md
|
||||
```
|
||||
|
||||
However, there might be more recent ones in user-contributed [wiki](https://github.com/jesec/flood/wiki) of this project.
|
||||
|
||||
### Links to downstream repositories of packages
|
||||
|
||||
TBD.
|
||||
|
||||
### Contributing
|
||||
|
||||
Contributions are welcome.
|
||||
26
distribution/alpine/flood/APKBUILD
Normal file
26
distribution/alpine/flood/APKBUILD
Normal file
@@ -0,0 +1,26 @@
|
||||
# Maintainer: Jesse Chan <jc@linux.com>
|
||||
# Contributor: Jesse Chan <jc@linux.com>
|
||||
_npmname=flood
|
||||
_npmver=4.3.1
|
||||
pkgname=flood
|
||||
pkgver=$_npmver
|
||||
pkgrel=0
|
||||
pkgdesc="A modern web UI for various torrent clients"
|
||||
arch="noarch !mips !mips64" # blocked by nodejs
|
||||
url="https://flood.js.org"
|
||||
license="GPL-3.0-only"
|
||||
depends="nodejs"
|
||||
makedepends="npm"
|
||||
source="https://registry.npmjs.org/$_npmname/-/$_npmname-$_npmver.tgz"
|
||||
options="!check"
|
||||
builddir="$srcdir/package"
|
||||
|
||||
unpack() {
|
||||
# skipping unpacking, installing archive directly
|
||||
verify
|
||||
}
|
||||
|
||||
package() {
|
||||
npm install -g --user root --prefix "$pkgdir"/usr "$srcdir"/$_npmname-$_npmver.tgz
|
||||
chown -R root "$pkgdir"
|
||||
}
|
||||
39
distribution/archlinux/flood/PKGBUILD
Normal file
39
distribution/archlinux/flood/PKGBUILD
Normal file
@@ -0,0 +1,39 @@
|
||||
# Maintainer: Jesse Chan <jc@linux.com>
|
||||
# Contributor: Jesse Chan <jc@linux.com>
|
||||
_npmname=flood
|
||||
_npmver=4.3.1
|
||||
pkgname=flood
|
||||
pkgver=$_npmver
|
||||
pkgrel=0
|
||||
pkgdesc="A modern web UI for various torrent clients"
|
||||
arch=(any)
|
||||
url="https://flood.js.org"
|
||||
license=('GPL3')
|
||||
depends=('nodejs')
|
||||
makedepends=('jq' 'npm')
|
||||
optdepends=('mediainfo')
|
||||
source=(https://registry.npmjs.org/$_npmname/-/$_npmname-$_npmver.tgz)
|
||||
sha1sums=(.)
|
||||
noextract=("$_npmname-$_npmver.tgz")
|
||||
|
||||
package() {
|
||||
# Thanks jeremejevs and je-vv for the pointers on these!
|
||||
npm install -g --user root --cache "${srcdir}/npm-cache" --prefix "$pkgdir/usr" "$srcdir/$_npmname-$pkgver.tgz"
|
||||
|
||||
# Fix permissions
|
||||
find "$pkgdir"/usr -type d -exec chmod 755 {} +
|
||||
|
||||
# npm gives ownership of ALL FILES to build user
|
||||
# https://bugs.archlinux.org/task/63396
|
||||
chown -R root:root "${pkgdir}"
|
||||
|
||||
# Remove references to pkgdir
|
||||
find "$pkgdir" -type f -name package.json -print0 | xargs -0 sed -i "/_where/d"
|
||||
|
||||
# Remove references to srcdir
|
||||
local tmppackage="$(mktemp)"
|
||||
local pkgjson="$pkgdir/usr/lib/node_modules/$_npmname/package.json"
|
||||
jq '.|=with_entries(select(.key|test("_.+")|not))' "$pkgjson" > "$tmppackage"
|
||||
mv "$tmppackage" "$pkgjson"
|
||||
chmod 644 "$pkgjson"
|
||||
}
|
||||
0
distribution/debian/flood/changelog
Normal file
0
distribution/debian/flood/changelog
Normal file
25
distribution/debian/flood/control
Normal file
25
distribution/debian/flood/control
Normal file
@@ -0,0 +1,25 @@
|
||||
Source: flood
|
||||
Maintainer: Jesse Chan <jc@linux.com>
|
||||
Uploaders: Jesse Chan <jc@linux.com>
|
||||
Section: javascript
|
||||
Priority: optional
|
||||
Testsuite: autopkgtest-pkg-nodejs
|
||||
Build-Depends: debhelper-compat (= 12),
|
||||
pkg-js-tools (>= 0.9.20~)
|
||||
Standards-Version: 4.5.0
|
||||
Vcs-Browser: https://github.com/jesec/flood
|
||||
Vcs-Git: https://github.com/jesec/flood.git
|
||||
Homepage: https://github.com/jesec/flood
|
||||
Rules-Requires-Root: no
|
||||
|
||||
Package: flood
|
||||
Architecture: all
|
||||
Depends: ${misc:Depends},
|
||||
nodejs
|
||||
Recommends: mediainfo
|
||||
Description: modern web user interface for various torrent clients
|
||||
Flood is a modern web user interface for various torrent clients
|
||||
with a Node.js backend and React frontend.
|
||||
.
|
||||
Flood uses a command line interface for configuration. Run Flood
|
||||
with --help argument for more details.
|
||||
50
distribution/debian/flood/copyright
Normal file
50
distribution/debian/flood/copyright
Normal file
@@ -0,0 +1,50 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: flood
|
||||
Upstream-Contact: https://github.com/jesec/flood/issues
|
||||
Source: https://github.com/jesec/flood
|
||||
|
||||
Files: *
|
||||
Copyright: 2015-2021 Contributors to the Flood project
|
||||
License: GPL-3.0-only
|
||||
|
||||
Files: distribution/debian/flood/*
|
||||
Copyright: 2016 Tim Potter <tpot@hpe.com>
|
||||
2021 Contributors to the Flood project
|
||||
License: Expat
|
||||
|
||||
License: GPL-3.0-only
|
||||
This program is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation, version 3.
|
||||
.
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 3 license can be found in "/usr/share/common-licenses/GPL-3".
|
||||
|
||||
License: Expat
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation files
|
||||
(the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
3
distribution/debian/flood/docs
Normal file
3
distribution/debian/flood/docs
Normal file
@@ -0,0 +1,3 @@
|
||||
README.md
|
||||
CHANGELOG.md
|
||||
SECURITY.md
|
||||
5
distribution/debian/flood/gbp.conf
Normal file
5
distribution/debian/flood/gbp.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
[DEFAULT]
|
||||
pristine-tar = True
|
||||
|
||||
[import-orig]
|
||||
filter = [ '.gitignore', '.travis.yml', '.git*' ]
|
||||
2
distribution/debian/flood/nodejs/files
Normal file
2
distribution/debian/flood/nodejs/files
Normal file
@@ -0,0 +1,2 @@
|
||||
bin
|
||||
lib
|
||||
1
distribution/debian/flood/nodejs/links
Normal file
1
distribution/debian/flood/nodejs/links
Normal file
@@ -0,0 +1 @@
|
||||
flood/bin/flood /usr/bin/flood
|
||||
8
distribution/debian/flood/rules
Executable file
8
distribution/debian/flood/rules
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/make -f
|
||||
# -*- makefile -*-
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
%:
|
||||
dh $@ --with nodejs
|
||||
1
distribution/debian/flood/source/format
Normal file
1
distribution/debian/flood/source/format
Normal file
@@ -0,0 +1 @@
|
||||
3.0 (quilt)
|
||||
5
distribution/debian/flood/tests/pkg-js/test
Normal file
5
distribution/debian/flood/tests/pkg-js/test
Normal file
@@ -0,0 +1,5 @@
|
||||
if [ -d bin ]; then
|
||||
./bin/flood --version
|
||||
else
|
||||
flood --version
|
||||
fi
|
||||
6
distribution/debian/flood/upstream/metadata
Normal file
6
distribution/debian/flood/upstream/metadata
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
Archive: GitHub
|
||||
Bug-Database: https://github.com/jesec/flood/issues
|
||||
Repository: https://github.com/jesec/flood.git
|
||||
Repository-Browse: https://github.com/jesec/flood
|
||||
Bug-Submit: https://github.com/jesec/flood/issues/new
|
||||
5
distribution/debian/flood/watch
Normal file
5
distribution/debian/flood/watch
Normal file
@@ -0,0 +1,5 @@
|
||||
version=3
|
||||
opts=\
|
||||
dversionmangle=s/\+(debian|dfsg|ds|deb)(\.\d+)?$//,\
|
||||
filenamemangle=s/.*\/v?([\d\.-]+)\.tar\.gz/flood-$1.tar.gz/ \
|
||||
https://github.com/jesec/flood/tags .*/archive/v?([\d\.]+).tar.gz
|
||||
15
distribution/shared/flood@.service
Normal file
15
distribution/shared/flood@.service
Normal file
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Flood service for %I
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=%I
|
||||
Group=%I
|
||||
Type=simple
|
||||
KillMode=process
|
||||
ExecStart=/usr/bin/env flood
|
||||
Restart=on-failure
|
||||
RestartSec=3
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
108
distribution/shared/nginx.md
Normal file
108
distribution/shared/nginx.md
Normal file
@@ -0,0 +1,108 @@
|
||||
In order to use Flood behind a reverse proxy:
|
||||
|
||||
- Forward `/api` requests to Flood's NodeJS backend server.
|
||||
- Serve static assets.
|
||||
- Redirects client routes (`/overview`, `/register` and `/login`) to `index.html`.
|
||||
|
||||
Alternatively you may let Flood's server handle all requests. However, if you want better performance, serve static assets from the web server.
|
||||
|
||||
This tutorial assumes that Flood is running at `127.0.0.1:3000`. This is configurable by `--host` and `--port` arguments.
|
||||
|
||||
This tutorial assumes that Flood is installed in `/usr/lib/node_modules/flood` and as such assets are located in:
|
||||
|
||||
<pre>
|
||||
/usr/lib/node_modules/flood<b>/dist/assets</b>
|
||||
</pre>
|
||||
|
||||
## Serve from the root
|
||||
|
||||
For example:
|
||||
|
||||
<pre>
|
||||
<b>subdomain</b>.your-domain.com
|
||||
</pre>
|
||||
|
||||
Your nginx config should contain these rules:
|
||||
|
||||
```nginx
|
||||
server_name subdomain.your-domain.com;
|
||||
root /usr/lib/node_modules/flood/dist/assets;
|
||||
|
||||
location /api {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri /index.html;
|
||||
}
|
||||
```
|
||||
|
||||
## Serve from a nested route
|
||||
|
||||
Often people want to expose multiple web applications with a single nginx config. This is possible using Flood's `--baseuri` option.
|
||||
|
||||
For example, when `--baseuri=/flood`, you may access Flood at:
|
||||
|
||||
<pre>
|
||||
your-domain.com<b>/flood/</b>
|
||||
<b>↑</b>
|
||||
</pre>
|
||||
|
||||
Flood frontend uses relative path so there has to be a slash at the end when you access the nested route.
|
||||
|
||||
You may configure your web server to redirect users from `/flood` to `/flood/`. It is not covered by this tutorial.
|
||||
|
||||
Your nginx config should contain these rules:
|
||||
|
||||
```nginx
|
||||
server_name your-domain.com;
|
||||
|
||||
location /flood/api {
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
}
|
||||
|
||||
location /flood/ {
|
||||
alias /usr/lib/node_modules/flood/dist/assets/;
|
||||
try_files $uri /flood/index.html;
|
||||
}
|
||||
```
|
||||
|
||||
## Disable caching for API endpoints
|
||||
|
||||
API requests should not be cached. You can disable caching in nginx by adding these lines in your `location /api` block:
|
||||
|
||||
```nginx
|
||||
proxy_buffering off;
|
||||
proxy_cache off;
|
||||
```
|
||||
|
||||
## Compression
|
||||
|
||||
Static assets of Flood are large. Compression can save bandwidth and make the page loading faster.
|
||||
|
||||
Note that to enable compression, you must serve static assets from web server.
|
||||
|
||||
```nginx
|
||||
gzip on;
|
||||
gzip_vary on;
|
||||
gzip_proxied any;
|
||||
gzip_comp_level 6;
|
||||
gzip_types text/plain text/css text/xml application/json application/javascript image/x-icon;
|
||||
```
|
||||
|
||||
You may also use other compression methods such as `brotli`.
|
||||
|
||||
## HTTP Basic Auth
|
||||
|
||||
You may opt to use HTTP basic auth. To avoid double authentication, use `auth=none` option of Flood and pre-configure client connection settings.
|
||||
|
||||
https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication
|
||||
|
||||
```
|
||||
satisfy any;
|
||||
allow 192.168.1.0/24; # Allows unauthenticated access from local network
|
||||
deny all;
|
||||
|
||||
auth_basic "Private Server";
|
||||
auth_basic_user_file /etc/nginx/.passwords.list;
|
||||
```
|
||||
Reference in New Issue
Block a user