/selfdroid-web-app

A self-hosted Android app store - web application

Primary LanguagePythonOtherNOASSERTION

Selfdroid Web App

Selfdroid is an open-source self-hosted Android app store written in Python 3 using the Flask framework. This web app allows one to upload Android apps (in the form of APK files) to their own server, from where they can then be downloaded.

It is intended primarily for those who want to distribute their own apps only to a relatively small amount of devices (e.g. within a company or a household) and therefore do not want to pay for a Google Play Developer account.

Features and characteristics

  • automatic app metadata (e.g. name, version, icon) extraction from APK files
  • privilege separation – user- and administrator-level access
    • user – can view and download apps (with optional password protection)
    • administrator – can add, update and delete apps (with mandatory password protection)
  • responsive web interface
  • backward- and forward-compatible JSON API
  • atomic and consistent backend app storage

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

Deployment & usage

1. Requirements

  • Linux
  • Python 3.7+

The program was tested in Python 3.7 (Debian 10), Python 3.8 (Ubuntu 20.04) and Python 3.9 (Debian 11).

2. Install the dependencies

On Debian/Ubuntu and their derivatives, execute the following:

sudo apt update 
sudo apt install python3 python3-pip python3-venv python3-virtualenv virtualenv uwsgi-core uwsgi-plugin-python3

3. Change the configuration to fit your needs

The app's configuration can be altered in the Settings.py file.

One must configure the user and administrator password in the settings file before deploying the app!

4. Prepare the environment

The bash script prepare.sh will do it for you:

./prepare.sh

5. Start the Flask app

To start the web app using the Flask's built-in development server, use the run_dev_server.sh bash script:

./run_dev_server.sh

To run the app in a production environment, hook it to a web server using an appropriate interface. The web app already comes with the following files to help you out with this:

Android app

As has been mentioned above, the web app has a JSON API, which was intended to be used by a Selfdroid Android app, which would make deploying and updating the uploaded apps more convenient. However, due to the fact that my focus has, for several reasons, shifted onto other projects since this web app has been published, there are currently no plans to create the Android app. Contributions are welcome, though.

Licensing

This project is licensed under the 3-clause BSD license. See the LICENSE file for details.

In addition, this project uses some third-party open-source components. See the BACKEND-THIRD-PARTY-LICENSES and FRONTEND-THIRD-PARTY-LICENSES files for details.

Written by Vít Labuda.