A lightweight small-scale/private image hosting application. Direct issues and PRs to https://github.com/itinerare/Alcyone !
Find a file
2024-06-09 13:55:56 -04:00
.forgejo/workflows feat!: update to Laravel 11 2024-03-15 12:30:01 -04:00
.github chore(workflows): allow release updates 2024-06-09 13:55:56 -04:00
app fix(images): unset cache expiry time when deleting image 2024-03-25 22:45:04 -04:00
bootstrap refactor: fix PHP styling 2024-03-15 12:37:04 -04:00
config refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
database refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
public chore(deps): rebuild vite assets 2024-03-26 16:13:33 +00:00
resources refactor: fix blade formatting 2024-02-23 13:13:34 -05:00
routes refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
storage chore: fresh laravel installation 2023-10-06 14:39:17 -04:00
tests refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
.bladeformatterrc.json chore(deps-dev): set up JS deps, blade formatter 2023-10-06 14:51:49 -04:00
.bladeignore chore(deps-dev): set up JS deps, blade formatter 2023-10-06 14:51:49 -04:00
.editorconfig chore: fresh laravel installation 2023-10-06 14:39:17 -04:00
.env.example chore: update example .env 2024-03-17 08:52:47 -04:00
.gitattributes chore: fresh laravel installation 2023-10-06 14:39:17 -04:00
.gitignore chore: track vite assets/manifest 2023-10-06 19:00:16 -04:00
artisan refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
CHANGELOG.md chore(update): 2.0.1 2024-03-31 09:08:40 -04:00
CODE_OF_CONDUCT.md docs: change CoC email 2023-11-03 16:04:24 -04:00
composer.json chore(update): 2.0.1 2024-03-31 09:08:40 -04:00
composer.lock chore(deps): update dependency spatie/laravel-ignition to v2.5.0 2024-03-29 15:01:57 +00:00
LICENSE docs: update readme, license year, example .env 2023-11-03 16:01:16 -04:00
package-lock.json chore(update): 2.0.1 2024-03-31 09:08:40 -04:00
package.json chore(update): 2.0.1 2024-03-31 09:08:40 -04:00
phpunit.xml refactor: rebuild on Laravel 11 application skeleton 2024-03-15 12:30:01 -04:00
pint.json chore: add pint config 2023-10-06 14:49:00 -04:00
README.md docs: update readme 2024-03-15 12:35:43 -04:00
renovate.json5 chore: update renovate config repo reference 2024-03-15 15:21:59 -04:00
vite.config.js feat: add tinyMCE to site page editing 2023-11-03 18:55:36 -04:00

Alcyone

Alcyone is a lightweight small-scale/private image hosting application. It supports multiple users, with registration restricted via invitation code. Image uploads are private per user, with a content report flow if necessary, accessible without registration. Images are stored in webP for storage and performance savings, with the ability to generate and cache a png version for convenience.

Features

  • Support for multiple users, with permissions handled via a lightweight rank system (user/moderator/admin)
  • Users can upload (by default) images of up to 17MB, only visible personally on the site
    • Images are converted (if necessary) to webP for storage and performance savings
    • Images may be accessed via either a "web URL" (webP) or "share URL" (png); png images are cached for 24 hours and then removed to save on storage space
    • Users may delete their own images at will
  • A content report flow; content reports are created semi-anonymously (IP and optionally email address are recorded, the latter for notifications re report(s) only) and do not require registration
    • A report page accessible via key for access by the reporter
    • Reports are added to a queue accessible by moderators and admins, where they may be accepted (deleting the reported image), cancelled (preserving it), or the reporter banned (in the event of abuse of the report system)
    • Optional email notifications for the reporter on processing a report
  • Notifications (presently only used to notify an image's uploader that an image was removed as a result of a content report)
  • Light and dark themes (defaults to dark theme, adjustable in user settings for registered users)
  • 2FA for registered users
  • An invitation key system; invitation keys are necessary to register and may only be generated by site admin(s)
  • Minor rank editing (name and description), accessible only to admins
  • User index and editing, accessible only to admins
  • On-site editing for the terms of service and privacy policy pages
  • A lightweight admin/moderator panel
    • Moderators may access the index and reports queue
    • Admins have access to all functions
  • Backup handling including optional Dropbox support

Setup

Obtain a copy of the code

$ git clone https://code.itinerare.net/itinerare/alcyone.git

Configure .env in the directory

$ cp .env.example .env
  • See here for a list of PHP-supported time zones.
  • You will need to provide email information; in a pinch services that allow sending email via SMTP will do.

Setting up

Install packages with composer:

$ composer install

Generate app key, create the database, and run migrations:

$ php artisan key:generate
$ php artisan migrate

Perform general site setup:

$ php artisan setup-alcyone

Ensure that the scheduler is added to cron, like so:

* * * * * cd ~/site-name.com/www && php artisan schedule:run >> /dev/null 2>&1

Contact

If you have any questions, please contact me via email at queries@itinerare.net.