70 lines
1.7 KiB
Markdown
70 lines
1.7 KiB
Markdown
Upload images to self-hosted static file server via sshfs.
|
|
|
|
---
|
|
|
|
Example usage:
|
|
|
|
Upload an image on the clipboard and copy the url to the
|
|
clipboard.
|
|
|
|
$ imup
|
|
|
|
Upload an image from one or more files or urls.
|
|
|
|
$ imup https://example.com/image.png
|
|
$ imup foo.png bar.png baz.png
|
|
|
|
Upload an image from stdin.
|
|
|
|
$ convert foo.png -flip - | imup -
|
|
|
|
## Installation and setup.
|
|
|
|
This assumes you already have some hosted static files and ssh configured with write permissions to that directory. Images are copied to the host via `scp`. Thus authentication is deferred to other systems like VPN and SSH, and hosting is deferred to static web servers like nginx. This tool is only a convenience to normalize/strip image data and upload the files.
|
|
|
|
The client depends on `imagemagick`, `sshfs`, and `xclip`. The host only needs to serve ssh and static files.
|
|
|
|
```zsh
|
|
apt install imagemagick sshfs xclip
|
|
```
|
|
|
|
Clone the repository, and install it via tool like `pipx` or `uv`.
|
|
|
|
```zsh
|
|
uv tool install 'imup@git+https://git.allemangd.dev/me/imup.git'
|
|
```
|
|
|
|
Configure imup with `~/.config/imup.toml`. For example, my config is:
|
|
|
|
```toml
|
|
[imup]
|
|
target = "imup-host:/var/www/i.allemangd.dev"
|
|
base_url = "https://i.allemangd.dev/"
|
|
```
|
|
|
|
Granted write permissions to `/var/www/i.allemangd.dev` to my ssh user, and configure an ssh host with keys for that user.
|
|
|
|
```
|
|
# ssh config
|
|
Host imup-host
|
|
HostName ...
|
|
User ...
|
|
IdentifyFile ...
|
|
```
|
|
|
|
Configure the static file host; for example on my host I have the following nginx server config:
|
|
|
|
```
|
|
# nginx config
|
|
server {
|
|
listen 80;
|
|
# (ssl settings omitted)
|
|
|
|
server_name i.allemangd.dev;
|
|
|
|
location / {
|
|
root /var/www/i.allemangd.dev/;
|
|
}
|
|
}
|
|
```
|