Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.
Go to file
2021-11-11 16:18:31 +01:00
.dev Pushed version 1.7.4 2021-11-08 15:42:32 +01:00
.github github directory name changed 2021-08-03 10:22:55 +02:00
client Moved auth form. Added auto login and logout functionality 2021-11-11 14:45:58 +01:00
controllers Backend: auth for config and queries. Refactor of middleware exports 2021-11-11 16:18:31 +01:00
db Added auth middleware. Added access control to apps 2021-11-11 16:01:56 +01:00
k8s Kubernetes integration (#80) 2021-08-17 10:32:15 +02:00
middleware Backend: auth for config and queries. Refactor of middleware exports 2021-11-11 16:18:31 +01:00
models Added auth middleware. Added access control to apps 2021-11-11 16:01:56 +01:00
routes Backend: auth for config and queries. Refactor of middleware exports 2021-11-11 16:18:31 +01:00
utils Added login route and token signing 2021-11-10 16:14:22 +01:00
.dockerignore Kubernetes integration (#80) 2021-08-17 10:32:15 +02:00
.env Created separate settings for Docker 2021-11-10 16:45:30 +01:00
.gitignore Split remaining controllers into separate files. Added iOS homescreen icon. Removed additional logging from weather module. 2021-11-04 23:39:35 +01:00
.prettierignore Pushed version 1.6.2. Small formatting fixes 2021-08-06 10:36:05 +02:00
.prettierrc Added cli tool for adding new search engines/providers 2021-08-06 16:16:13 +02:00
api.js Backend: auth for config and queries. Refactor of middleware exports 2021-11-11 16:18:31 +01:00
CHANGELOG.md Pushed version 1.7.4 2021-11-08 15:42:32 +01:00
docker-compose.yml Fix for #96 2021-10-04 16:15:17 +02:00
Dockerfile Pushed version 1.7.4 2021-11-08 15:42:32 +01:00
Dockerfile.dev Kubernetes integration (#80) 2021-08-17 10:32:15 +02:00
Dockerfile.multiarch Pushed version 1.7.4 2021-11-08 15:42:32 +01:00
LICENSE.md Added License file 2021-06-10 13:44:03 +02:00
package-lock.json Added login route and token signing 2021-11-10 16:14:22 +01:00
package.json Added login route and token signing 2021-11-10 16:14:22 +01:00
README.md Created separate settings for Docker 2021-11-10 16:45:30 +01:00
server.js Changed initial files creation process 2021-10-06 14:17:31 +02:00
skaffold.yaml Kubernetes integration (#80) 2021-08-17 10:32:15 +02:00
Socket.js Imporved logger 2021-06-22 14:49:00 +02:00
Sockets.js Added WebSockets with funcionality to send messages from any module 2021-05-19 17:17:24 +02:00

Flame

Homescreen screenshot

Description

Flame is self-hosted startpage for your server. Its design is inspired (heavily) by SUI. Flame is very easy to setup and use. With built-in editors, it allows you to setup your very own application hub in no time - no file editing necessary.

Technology

  • Backend
    • Node.js + Express
    • Sequelize ORM + SQLite
  • Frontend
    • React
    • Redux
    • TypeScript
  • Deployment
    • Docker
    • Kubernetes

Development

# clone repository
git clone https://github.com/pawelmalak/flame
cd flame

# run only once
npm run dev-init

# start backend and frontend development servers
npm run dev

Installation

Docker Hub link

docker pull pawelmalak/flame:latest

# for ARM architecture (e.g. RaspberryPi)
docker pull pawelmalak/flame:multiarch

Building images

# build image for amd64 only
docker build -t flame .

# build multiarch image for amd64, armv7 and arm64
# building failed multiple times with 2GB memory usage limit so you might want to increase it
docker buildx build \
  --platform linux/arm/v7,linux/arm64,linux/amd64 \
  -f Dockerfile.multiarch \
  -t flame:multiarch .

Deployment

# run container
docker run -p 5005:5005 -v /path/to/data:/app/data flame

Docker-Compose

version: '2.1'
services:
  flame:
    image: pawelmalak/flame:latest
    container_name: flame
    volumes:
      - <host_dir>:/app/data
      - /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration feature
    ports:
      - 5005:5005
    restart: unless-stopped

Skaffold

# use skaffold
skaffold dev

Without Docker

Follow instructions from wiki: Installation without Docker

Functionality

  • Applications
    • Create, update, delete and organize applications using GUI
    • Pin your favourite apps to the homescreen

Homescreen screenshot

  • Bookmarks
    • Create, update, delete and organize bookmarks and categories using GUI
    • Pin your favourite categories to the homescreen
    • Import html bookmarks (experimental)

Homescreen screenshot

  • Weather

    • Get current temperature, cloud coverage and weather status with animated icons
  • Themes

    • Customize your page by choosing from 15 color themes

Homescreen screenshot

Usage

Searching

To use search bar you need to type your search query with selected prefix. For example, to search for "what is docker" using google search you would type: /g what is docker.

You can change where to open search results (same/new tab) in the settings

For list of supported search engines, shortcuts and more about searching functionality visit project wiki.

Setting up weather module

  1. Obtain API Key from Weather API.

    Free plan allows for 1M calls per month. Flame is making less then 3K API calls per month.

  2. Get lat/long for your location. You can get them from latlong.net.
  3. Enter and save data. Weather widget will now update and should be visible on Home page.

Docker integration

In order to use the Docker integration, each container must have the following labels:

labels:
  - flame.type=application # "app" works too
  - flame.name=My container
  - flame.url=https://example.com
  - flame.icon=icon-name # optional, default is "docker"
# - flame.icon=custom to make changes in app. ie: custom icon upload

"Use Docker API" option must be enabled for this to work. You can find it in Settings > Docker

You can also set up different apps in the same label adding ; between each one.

labels:
  - flame.type=application
  - flame.name=First App;Second App
  - flame.url=https://example1.com;https://example2.com
  - flame.icon=icon-name1;icon-name2

If you want to use a remote docker host follow this instructions in the host:

  • Open the file /lib/systemd/system/docker.service, search for ExecStart and edit the value
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:${PORT} -H unix:///var/run/docker.sock

The above command will bind the docker engine server to the Unix socket as well as TCP port of your choice. “0.0.0.0” means docker-engine accepts connections from all IP addresses.

  • Restart the daemon and Docker service
sudo systemctl daemon-reload
sudo service docker restart
  • Test if it is working
curl http://${IP}:${PORT}/version

Kubernetes integration

In order to use the Kubernetes integration, each ingress must have the following annotations:

metadata:
  annotations:
  - flame.pawelmalak/type=application # "app" works too
  - flame.pawelmalak/name=My container
  - flame.pawelmalak/url=https://example.com
  - flame.pawelmalak/icon=icon-name # optional, default is "kubernetes"

"Use Kubernetes Ingress API" option must be enabled for this to work. You can find it in Settings > Docker

Import HTML Bookmarks (Experimental)

  • Requirements
    • python3
    • pip packages: Pillow, beautifulsoup4
  • Backup your db.sqlite before running script!
  • Known Issues:
    • generated icons are sometimes incorrect
pip3 install Pillow, beautifulsoup4

cd flame/.dev
python3 bookmarks_importer.py --bookmarks <path to bookmarks.html> --data <path to flame data folder>

Custom CSS and themes

See project wiki for Custom CSS and Custom theme with CSS.