Skip to content

Install Scripts

opencode edited this page Aug 14, 2026 · 2 revisions

Install scripts (curl & iex)

DE: Deutsch → Installationsskripte

FlutLink ships four install scripts under scripts/ that can be run directly from the GitHub repository without cloning it:

Script Target Shell
install-flutlink.ps1 FlutLink desktop client (Windows, macOS, Linux) PowerShell 7+
install-flutlink.sh FlutLink desktop client (macOS, Linux) bash
install-flutcloud-app.ps1 FlutCloud Nextcloud app on the server PowerShell 7+
install-flutcloud-app.sh FlutCloud Nextcloud app on the server (Ubuntu/Debian) bash

All of them are invoked the same way: the script text is streamed straight from the raw GitHub URL into the shell and executed in memory — nothing is saved to disk unless you do it yourself.

PowerShell: iex (irm <url>)

irm (Invoke-RestMethod) downloads the script text, iex (Invoke-Expression) runs it:

iex (irm https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutlink.ps1)
iex (irm https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutcloud-app.ps1)

PowerShell: curl.exe ... | iex

The classic Windows piping style — curl.exe (the real curl, not the PowerShell curl alias for Invoke-WebRequest) downloads the script and pipes it to iex:

curl.exe -sL https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutlink.ps1 | iex
curl.exe -sL https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutcloud-app.ps1 | iex
  • -s silences curl's progress output, -L follows GitHub's redirects to the raw file. If you omit -L, GitHub redirects anyway, but curl.exe without -L will not follow them.
  • In PowerShell, curl alone is an alias for Invoke-WebRequest; always write curl.exe in scripts so the real curl is used.

bash: curl ... | bash

On macOS and Linux the equivalent one-liner is:

curl -sL https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutlink.sh | bash
curl -sL https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutcloud-app.sh | bash

The bash scripts need a POSIX bash (the macOS system bash 3.2 works) plus curl. The client script additionally needs jq or python3 to read the GitHub release metadata (either one is usually present on modern systems).

What happens when you run them

  1. install-flutlink.* queries the GitHub API for the latest release, picks the installer for your OS/architecture, downloads it, verifies its SHA-256 digest and runs it (AppImage/.deb on Linux, .dmg on macOS, .exe/.msi on Windows).
  2. install-flutcloud-app.* finds the Nextcloud installation, downloads the flutcloud-app sources, copies them into apps/flutcloud, enables the app with occ and verifies it. When run interactively (in a terminal) it first asks you to confirm the detected path or enter the path where you installed Nextcloud; piped (curl | bash) runs skip the prompt and use the detected path.

Passing parameters

When piped directly, the scripts run with defaults (latest release, automatic detection). To pass parameters, download the script to a file first and run it:

irm https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutlink.ps1 -OutFile install-flutlink.ps1
./install-flutlink.ps1 -Tag v0.1.0 -NoRun
curl -sL https://raw.githubusercontent.com/OseMine/FlutLink/main/scripts/install-flutlink.sh -o install-flutlink.sh
./install-flutlink.sh --tag v0.1.0 --no-run

install-flutlink.*

PowerShell bash Meaning
-Tag v0.1.0 --tag v0.1.0 Install a specific release instead of the latest
-DownloadDir <dir> --dir <dir> Directory for the downloaded installer
-NoRun --no-run Only download (and verify), do not install
-NoVerify --no-verify Skip the SHA-256 verification (not recommended)

install-flutcloud-app.*

PowerShell bash Meaning
-NextcloudRoot <path> --nextcloud-root <path> Nextcloud folder (contains occ); when not given it is auto-detected and confirmed interactively
-Ref <tag-or-branch> --ref <tag-or-branch> Release tag or branch to install
-WebUser <user> --web-user <user> Web-server user (default www-data)
-DockerContainer <id> --docker-container <id> Run occ via docker exec
-Composer --composer Generate the Composer autoloader
-NoSudo --no-sudo Run occ/chown directly (as www-data or root)
-SkipVerify --skip-verify Skip the app:list check afterwards

Security notes

  • The pipe runs whatever the URL returns. Always double-check the URL is the official raw.githubusercontent.com/OseMine/FlutLink/... path and review the script once before trusting it — save it to a file and read it, or irm <url> | Get-Content to inspect the text before running.
  • The scripts only download from the GitHub Releases API and verify the SHA-256 digest published by GitHub; they never ask for passwords and never store credentials.

Troubleshooting

  • curl : The term 'curl' is not recognized → you are in PowerShell without curl.exe; use iex (irm <url>) instead.
  • Invoke-RestMethod fails on GitHub redirects / TLS → make sure you are on PowerShell 7+ ($PSVersionTable.PSVersion) and that TLS 1.2+ is enabled.
  • Execution policy — iex (irm ...) is not blocked by the execution policy (it is an expression, not a script file). If you saved the script to a file and it is blocked, run ./install-flutlink.ps1 after Set-ExecutionPolicy -Scope Process Bypass for the current session.
  • jq/python3 missing (Linux/macOS client script) → install one of them, e.g. sudo apt install jq on Ubuntu or brew install jq on macOS.
  • Permission denied while installing the server app — the script elevates to sudo automatically when nextcloud/apps is not writable by your user (typical for /var/www/nextcloud); run it from an account with sudo rights, or pass --no-sudo when you are already running as www-data or root.
  • Proxy/offline server → download the scripts and the assets manually and run them from files; the scripts have no additional network requirements beyond GitHub.

See Getting started for the one-liners and FlutCloud app for the server-side installation.

Getting Started

Features / Funktionen

Architecture & Sync

Components / Komponenten

Security & Development

Clone this wiki locally