mirror/github-mirror.sh publishes main and its tags to a read-only GitHub mirror, adding a notice under the README title, with a systemd timer to run it hourly. A GitHub Actions workflow builds the images on the mirror and pushes them to ghcr.io. The docs point prebuilt images there, and CONTRIBUTING no longer invites issues and pull requests. upstream-status.sh now fetches without tags, so upstream's version tags stay out of local clones.
216 lines
9.1 KiB
Markdown
216 lines
9.1 KiB
Markdown
# Dotcom Arcade
|
|
|
|
**Your own Flash-era game portal, powered by
|
|
[Flashpoint Ultimate](https://flashpointarchive.org/).**
|
|
|
|
Dotcom Arcade serves a [Flashpoint Ultimate](https://flashpointarchive.org/)
|
|
collection as a website you'd have played at a friend's house or in the computer
|
|
lab, with modern UX. It aims to play as much of the archive as possible in any
|
|
browser: Flash and HTML5 run in the page, and Java, Shockwave and the original
|
|
Flash Player stream from your server.
|
|
|
|

|
|
|
|
> [!NOTE]
|
|
>
|
|
> Dotcom Arcade is an unofficial community project, not affiliated with
|
|
> Flashpoint Archive. It's built on
|
|
> [flashpoint-web](https://github.com/darkraise/flashpoint-web) by darkraise.
|
|
|
|
## Before you start: hosting requirements
|
|
|
|
> [!WARNING]
|
|
>
|
|
> **Dotcom Arcade needs a lot of disk, and streaming needs a lot of CPU.** Check
|
|
> these before you download anything.
|
|
|
|
| Resource | Needed |
|
|
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| **Storage** | **More than 2.3 TB** for Flashpoint Ultimate 14, and growing with each release. 4.6 TB if you keep the downloaded archives to seed them. A spare desktop drive won't do. |
|
|
| **Time** | A day or more to download and extract, depending on your connection and disks. |
|
|
| **Server** | Linux with Docker. 2 CPU cores and 4 GB of RAM serve the site and in-browser games to a household. |
|
|
| **Streaming** | Optional, and heavy: every player gets their own container running the game and encoding its video on the CPU. Plan on roughly 1 to 2 CPU cores and 1 GB of RAM per player streaming at once, and a few Mbps of upload each. |
|
|
| **HTTPS** | Required for streaming, since browsers only allow its video decoder on secure pages. Recommended anyway. |
|
|
|
|
## Features
|
|
|
|
- **Plays almost everything.**
|
|
- Flash runs in [Ruffle](https://ruffle.rs/) and HTML5 runs natively.
|
|
- Games no browser can run stream from the server into the page, each player
|
|
in their own container: Java applets, Shockwave and Director games, and
|
|
Flash games that need the real Flash Player. With streaming on, any Flash
|
|
game can switch to the original Flash Player.
|
|
- **An arcade, not a file browser.** A portal-style layout with genre categories
|
|
and glossy tiles, and color schemes defined as data, so new themes are easy to
|
|
add.
|
|
- **Discovery first.** The homepage offers:
|
|
- a Game of the Day;
|
|
- a Time Machine of games released in any week, with a date picker;
|
|
- shelves from Flashpoint's curated playlists;
|
|
- your recently played games.
|
|
|
|
Browse lists default to a shuffle, not A to Z.
|
|
|
|
- **One page per game.** It has a click-to-play stage, details and tags, and
|
|
related games ranked by shared tags, series and developer.
|
|
- **Accounts and saves.**
|
|
- Multi-user, with roles.
|
|
- Favorites, playlists and play tracking.
|
|
- Game saves follow you between browsers, with the last 10 kept as backups.
|
|
- **Sign in through your proxy.** Authentik, Authelia, oauth2-proxy and similar
|
|
forward-auth proxies can sign users in.
|
|
- **Mature content filter.** Adult and extreme content is hidden unless a user
|
|
opts in.
|
|
|
|
<p align="center">
|
|
<img src="docs/images/game.png" alt="A game page" width="49%" />
|
|
<img src="docs/images/playing.png" alt="Playing a game in the page" width="49%" />
|
|
</p>
|
|
|
|
## Getting started
|
|
|
|
Check the [hosting requirements](#before-you-start-hosting-requirements) first.
|
|
|
|
### 1. Get Flashpoint Ultimate
|
|
|
|
Download two files from Flashpoint's
|
|
[downloads page](https://flashpointarchive.org/downloads):
|
|
|
|
- the **Flashpoint Ultimate** `.torrent` file;
|
|
- **Flashpoint Infinity for Linux** (`.7z`), whose software streaming needs.
|
|
|
|
[`scripts/setup-flashpoint.sh`](scripts/setup-flashpoint.sh) then does the rest:
|
|
|
|
- It checks that you have the disk space, and stops before downloading anything
|
|
if you don't.
|
|
- It downloads the torrent with `aria2c`.
|
|
- It extracts each archive in turn and deletes it afterwards, so the disk never
|
|
needs room for both.
|
|
- It pulls the database, settings and playlists out of `Base_1.zip`, which
|
|
otherwise only holds Windows software.
|
|
|
|
Re-run it to resume after an interruption.
|
|
|
|
```sh
|
|
sudo apt install aria2 7zip tmux
|
|
tmux new -s flashpoint
|
|
scripts/setup-flashpoint.sh --torrent FlashpointUltimate14.torrent \
|
|
--infinity fp14.0.3_lin_20251201.7z --seed-ratio 1.0 /srv/flashpoint
|
|
```
|
|
|
|
#### Please seed
|
|
|
|
Flashpoint Ultimate is shared over BitTorrent, and stays available only as long
|
|
as people seed it. If you can, give back at least what you downloaded:
|
|
|
|
- **Seed before extracting.** `--seed-ratio 1.0` keeps seeding after the
|
|
download until you've uploaded as much as you downloaded. `--seed-hours 24`
|
|
seeds for a day. With both, seeding stops at whichever comes first. This needs
|
|
no extra disk space, but extraction waits until seeding stops.
|
|
- **Seed for the long term.** `--keep-archives` keeps the archives after
|
|
extracting (about 4.6 TB in total), so a torrent client such as qBittorrent or
|
|
Transmission can go on seeding the downloads directory.
|
|
- **Let peers reach you.** The download listens on ports 6881-6999, TCP and UDP.
|
|
Forwarding them on your router and allowing them through your firewall lets
|
|
more people download from you.
|
|
|
|
### 2. Configure
|
|
|
|
```sh
|
|
cp .env.example .env
|
|
```
|
|
|
|
Set at least these:
|
|
|
|
```sh
|
|
FLASHPOINT_HOST_PATH=/srv/flashpoint
|
|
JWT_SECRET=<output of: openssl rand -hex 32>
|
|
PUID=1000 # your user, from `id -u` and `id -g`
|
|
PGID=1000
|
|
```
|
|
|
|
### 3. Start
|
|
|
|
```sh
|
|
docker compose up -d --build
|
|
```
|
|
|
|
To pull prebuilt images instead of building them, see
|
|
[prebuilt images](docs/09-deployment/docker-deployment.md#prebuilt-images).
|
|
|
|
Open `http://<server>/` and create the admin account. On first start the app
|
|
indexes the collection, which takes a few minutes on a full Ultimate install.
|
|
Under **Settings → App** you can set the site name and tagline.
|
|
|
|
### 4. Optional: streaming
|
|
|
|
Streaming plays the games browsers can't. To turn it on:
|
|
|
|
1. Run the setup script with `--infinity`.
|
|
2. Add to `.env`:
|
|
|
|
```sh
|
|
COMPOSE_PROFILES=streaming
|
|
STREAMING_API_TOKEN=<output of: openssl rand -hex 32>
|
|
```
|
|
|
|
3. Rebuild with `docker compose up -d --build`.
|
|
4. Serve the site over HTTPS. The app proxies streams itself, so your reverse
|
|
proxy only needs to pass WebSocket upgrades and allow long-lived connections.
|
|
See the [streaming guide](docs/10-features/13-streaming.md).
|
|
|
|
The session manager starts containers through the Docker socket, which amounts
|
|
to root on the host. It publishes no ports: only the app talks to it.
|
|
|
|
### Signing in through a reverse proxy
|
|
|
|
If your site sits behind Authentik, Authelia or another forward-auth proxy, the
|
|
app can trust the username it passes along. See
|
|
[proxy sign-in](docs/10-features/14-proxy-sign-in.md).
|
|
|
|
## Updating
|
|
|
|
```sh
|
|
git pull
|
|
docker compose up -d --build
|
|
```
|
|
|
|
## Documentation
|
|
|
|
The [docs](docs/README.md) cover features, deployment, configuration, the API
|
|
and development. Useful starting points:
|
|
|
|
- [Environment variables](docs/09-deployment/environment-variables.md)
|
|
- [Discovery portal](docs/10-features/12-discovery-portal.md)
|
|
- [Streaming](docs/10-features/13-streaming.md) and
|
|
[streaming internals](streaming/README.md)
|
|
- [Development setup](docs/08-development/setup-guide.md)
|
|
|
|
## Credits
|
|
|
|
- [Flashpoint Archive](https://flashpointarchive.org/), for preserving web games
|
|
and animations, and for the curated playlists the homepage draws on.
|
|
- [flashpoint-web](https://github.com/darkraise/flashpoint-web) by darkraise,
|
|
which this project is built on.
|
|
- [Ruffle](https://ruffle.rs/), for running Flash in modern browsers.
|
|
- [Selkies](https://github.com/selkies-project/selkies), which streams the
|
|
games.
|
|
- [Texgriddy](https://github.com/Weestuarty/texgriddy-es-de) by Weestuarty, an
|
|
ES-DE theme that inspired the site's look. The look was recreated from scratch
|
|
in CSS; none of Texgriddy's files, images or fonts are used.
|
|
- [Fredoka](https://fontsource.org/fonts/fredoka) (SIL Open Font License), the
|
|
display font.
|
|
|
|
## Legal
|
|
|
|
Flashpoint Archive is a preservation project whose legal standing has never been
|
|
settled. It removes games when their rights holders ask. Dotcom Arcade contains
|
|
no games and links to no game downloads. You get Flashpoint from Flashpoint's
|
|
own site, and you are responsible for complying with copyright law where you
|
|
live. Rights holders who want a game removed should contact
|
|
[Flashpoint Archive](https://flashpointarchive.org/).
|
|
|
|
## License
|
|
|
|
GPL-3.0, like flashpoint-web. See [LICENSE](LICENSE).
|