|
@@ -1,124 +1,125 @@
|
|
|
-
|
|
|
-
|
|
|
-# ConvertX
|
|
|
-
|
|
|
-[](https://github.com/C4illin/ConvertX/actions/workflows/docker-publish.yml)
|
|
|
-[](https://github.com/C4illin/ConvertX/pkgs/container/convertx)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-A self-hosted online file converter. Supports over a thousand different formats. Written with TypeScript, Bun and Elysia.
|
|
|
-
|
|
|
-## Features
|
|
|
-
|
|
|
-- Convert files to different formats
|
|
|
-- Process multiple files at once
|
|
|
-- Password protection
|
|
|
-- Multiple accounts
|
|
|
-
|
|
|
-## Converters supported
|
|
|
-
|
|
|
-| Converter | Use case | Converts from | Converts to |
|
|
|
-|------------------------------------------------------------------------------|---------------|---------------|-------------|
|
|
|
-| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 |
|
|
|
-| [resvg](https://github.com/RazrFalcon/resvg) | SVG | 1 | 1 |
|
|
|
-| [Vips](https://github.com/libvips/libvips) | Images | 45 | 23 |
|
|
|
-| [Assimp](https://github.com/assimp/assimp) | 3D Assets | 70 | 24 |
|
|
|
-| [XeLaTeX](https://tug.org/xetex/) | LaTeX | 1 | 1 |
|
|
|
-| [Pandoc](https://pandoc.org/) | Documents | 43 | 65 |
|
|
|
-| [GraphicsMagick](http://www.graphicsmagick.org/) | Images | 166 | 133 |
|
|
|
-| [FFmpeg](https://ffmpeg.org/) | Video | ~473 | ~280 |
|
|
|
-
|
|
|
-<!-- many ffmpeg fileformats are duplicates -->
|
|
|
-
|
|
|
-Any missing converter? Open an issue or pull request!
|
|
|
-
|
|
|
-## Deployment
|
|
|
-
|
|
|
-```yml
|
|
|
-# docker-compose.yml
|
|
|
-services:
|
|
|
- convertx:
|
|
|
- image: ghcr.io/c4illin/convertx
|
|
|
- container_name: convertx
|
|
|
- restart: unless-stopped
|
|
|
- ports:
|
|
|
- - "3000:3000"
|
|
|
- environment:
|
|
|
- - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234 # will use randomUUID() if unset
|
|
|
- volumes:
|
|
|
- - convertx:/app/data
|
|
|
-```
|
|
|
-
|
|
|
-or
|
|
|
-
|
|
|
-```bash
|
|
|
-docker run -p 3000:3000 -v ./data:/app/data ghcr.io/c4illin/convertx
|
|
|
-```
|
|
|
-
|
|
|
-Then visit `http://localhost:3000` in your browser and create your account. Don't leave it unconfigured and open, as anyone can register the first account.
|
|
|
-
|
|
|
-If you get unable to open database file run `chown -R $USER:$USER path` on the path you choose.
|
|
|
-
|
|
|
-### Environment variables
|
|
|
-
|
|
|
-All are optional, JWT_SECRET is recommended to be set.
|
|
|
-
|
|
|
-| Name | Default | Description |
|
|
|
-|---------------------------|---------|-------------|
|
|
|
-| JWT_SECRET | when unset it will use the value from randomUUID() | A long and secret string used to sign the JSON Web Token |
|
|
|
-| ACCOUNT_REGISTRATION | false | Allow users to register accounts |
|
|
|
-| HTTP_ALLOWED | false | Allow HTTP connections, only set this to true locally |
|
|
|
-| ALLOW_UNAUTHENTICATED | false | Allow unauthenticated users to use the service, only set this to true locally |
|
|
|
-| AUTO_DELETE_EVERY_N_HOURS | 24 | Checks every n hours for files older then n hours and deletes them, set to 0 to disable |
|
|
|
-| WEBROOT | "" | The address to the root path setting this to "/convert" will serve the website on "example.com/convert/" |
|
|
|
-
|
|
|
-### Tutorial
|
|
|
-
|
|
|
-Tutorial in french: <https://belginux.com/installer-convertx-avec-docker/>
|
|
|
-
|
|
|
-## Screenshots
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-## Development
|
|
|
-
|
|
|
-0. Install [Bun](https://bun.sh/) and Git
|
|
|
-1. Clone the repository
|
|
|
-2. `bun install`
|
|
|
-3. `bun run dev`
|
|
|
-
|
|
|
-Pull requests are welcome! See below and open issues for the list of todos.
|
|
|
-
|
|
|
-## Todo
|
|
|
-
|
|
|
-- [x] Add messages for errors in converters
|
|
|
-- [x] Add searchable list of formats
|
|
|
-- [ ] Add options for converters
|
|
|
-- [ ] Divide index.tsx into smaller components
|
|
|
-- [ ] Add tests
|
|
|
-- [ ] Make the upload button nicer and more easy to drop files on. Support copy paste as well if possible.
|
|
|
-- [ ] Make errors logs visible from the web ui
|
|
|
-- [ ] Add more converters:
|
|
|
- - [ ] [deark](https://github.com/jsummers/deark)
|
|
|
- - [ ] LibreOffice
|
|
|
- - [ ] [dvisvgm](https://github.com/mgieseki/dvisvgm)
|
|
|
-
|
|
|
-## Contributors
|
|
|
-
|
|
|
-<a href="https://github.com/C4illin/ConvertX/graphs/contributors">
|
|
|
- <img src="https://contrib.rocks/image?repo=C4illin/ConvertX" alt="Image with all contributors"/>
|
|
|
-</a>
|
|
|
-
|
|
|
-## Star History
|
|
|
-
|
|
|
-<a href="https://github.com/C4illin/ConvertX/stargazers">
|
|
|
- <picture>
|
|
|
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date&theme=dark" />
|
|
|
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date" />
|
|
|
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date" />
|
|
|
- </picture>
|
|
|
-</a>
|
|
|
+
|
|
|
+
|
|
|
+# ConvertX
|
|
|
+
|
|
|
+[](https://github.com/C4illin/ConvertX/actions/workflows/docker-publish.yml)
|
|
|
+[](https://github.com/C4illin/ConvertX/pkgs/container/convertx)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+A self-hosted online file converter. Supports over a thousand different formats. Written with TypeScript, Bun and Elysia.
|
|
|
+
|
|
|
+## Features
|
|
|
+
|
|
|
+- Convert files to different formats
|
|
|
+- Process multiple files at once
|
|
|
+- Password protection
|
|
|
+- Multiple accounts
|
|
|
+
|
|
|
+## Converters supported
|
|
|
+
|
|
|
+| Converter | Use case | Converts from | Converts to |
|
|
|
+|------------------------------------------------------------------------------|---------------|---------------|-------------|
|
|
|
+| [libjxl](https://github.com/libjxl/libjxl) | JPEG XL | 11 | 11 |
|
|
|
+| [resvg](https://github.com/RazrFalcon/resvg) | SVG | 1 | 1 |
|
|
|
+| [Vips](https://github.com/libvips/libvips) | Images | 45 | 23 |
|
|
|
+| [Assimp](https://github.com/assimp/assimp) | 3D Assets | 70 | 24 |
|
|
|
+| [XeLaTeX](https://tug.org/xetex/) | LaTeX | 1 | 1 |
|
|
|
+| [Pandoc](https://pandoc.org/) | Documents | 43 | 65 |
|
|
|
+| [GraphicsMagick](http://www.graphicsmagick.org/) | Images | 166 | 133 |
|
|
|
+| [FFmpeg](https://ffmpeg.org/) | Video | ~473 | ~280 |
|
|
|
+
|
|
|
+<!-- many ffmpeg fileformats are duplicates -->
|
|
|
+
|
|
|
+Any missing converter? Open an issue or pull request!
|
|
|
+
|
|
|
+## Deployment
|
|
|
+
|
|
|
+```yml
|
|
|
+# docker-compose.yml
|
|
|
+services:
|
|
|
+ convertx:
|
|
|
+ image: ghcr.io/c4illin/convertx
|
|
|
+ container_name: convertx
|
|
|
+ restart: unless-stopped
|
|
|
+ ports:
|
|
|
+ - "3000:3000"
|
|
|
+ environment:
|
|
|
+ - JWT_SECRET=aLongAndSecretStringUsedToSignTheJSONWebToken1234 # will use randomUUID() if unset
|
|
|
+ volumes:
|
|
|
+ - convertx:/app/data
|
|
|
+```
|
|
|
+
|
|
|
+or
|
|
|
+
|
|
|
+```bash
|
|
|
+docker run -p 3000:3000 -v ./data:/app/data ghcr.io/c4illin/convertx
|
|
|
+```
|
|
|
+
|
|
|
+Then visit `http://localhost:3000` in your browser and create your account. Don't leave it unconfigured and open, as anyone can register the first account.
|
|
|
+
|
|
|
+If you get unable to open database file run `chown -R $USER:$USER path` on the path you choose.
|
|
|
+
|
|
|
+### Environment variables
|
|
|
+
|
|
|
+All are optional, JWT_SECRET is recommended to be set.
|
|
|
+
|
|
|
+| Name | Default | Description |
|
|
|
+|---------------------------|---------|-------------|
|
|
|
+| JWT_SECRET | when unset it will use the value from randomUUID() | A long and secret string used to sign the JSON Web Token |
|
|
|
+| ACCOUNT_REGISTRATION | false | Allow users to register accounts |
|
|
|
+| HTTP_ALLOWED | false | Allow HTTP connections, only set this to true locally |
|
|
|
+| ALLOW_UNAUTHENTICATED | false | Allow unauthenticated users to use the service, only set this to true locally |
|
|
|
+| AUTO_DELETE_EVERY_N_HOURS | 24 | Checks every n hours for files older then n hours and deletes them, set to 0 to disable |
|
|
|
+| WEBROOT | "" | The address to the root path setting this to "/convert" will serve the website on "example.com/convert/" |
|
|
|
+
|
|
|
+### Tutorial
|
|
|
+
|
|
|
+Tutorial in french: <https://belginux.com/installer-convertx-avec-docker/>
|
|
|
+Tutorial in chinese: <https://xzllll.com/24092901/>
|
|
|
+
|
|
|
+## Screenshots
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## Development
|
|
|
+
|
|
|
+0. Install [Bun](https://bun.sh/) and Git
|
|
|
+1. Clone the repository
|
|
|
+2. `bun install`
|
|
|
+3. `bun run dev`
|
|
|
+
|
|
|
+Pull requests are welcome! See below and open issues for the list of todos.
|
|
|
+
|
|
|
+## Todo
|
|
|
+
|
|
|
+- [x] Add messages for errors in converters
|
|
|
+- [x] Add searchable list of formats
|
|
|
+- [ ] Add options for converters
|
|
|
+- [ ] Divide index.tsx into smaller components
|
|
|
+- [ ] Add tests
|
|
|
+- [ ] Make the upload button nicer and more easy to drop files on. Support copy paste as well if possible.
|
|
|
+- [ ] Make errors logs visible from the web ui
|
|
|
+- [ ] Add more converters:
|
|
|
+ - [ ] [deark](https://github.com/jsummers/deark)
|
|
|
+ - [ ] LibreOffice
|
|
|
+ - [ ] [dvisvgm](https://github.com/mgieseki/dvisvgm)
|
|
|
+
|
|
|
+## Contributors
|
|
|
+
|
|
|
+<a href="https://github.com/C4illin/ConvertX/graphs/contributors">
|
|
|
+ <img src="https://contrib.rocks/image?repo=C4illin/ConvertX" alt="Image with all contributors"/>
|
|
|
+</a>
|
|
|
+
|
|
|
+## Star History
|
|
|
+
|
|
|
+<a href="https://github.com/C4illin/ConvertX/stargazers">
|
|
|
+ <picture>
|
|
|
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date&theme=dark" />
|
|
|
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date" />
|
|
|
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=C4illin/ConvertX&type=Date" />
|
|
|
+ </picture>
|
|
|
+</a>
|