Skip to content

Camphouse is a simple, open-source, and self-hosted social media platform.

License

Notifications You must be signed in to change notification settings

VMGWARE/Camphouse

Folders and files

NameName
Last commit message
Last commit date
Oct 18, 2023
Oct 3, 2023
Jan 15, 2024
Feb 21, 2024
Dec 3, 2023
May 6, 2024
Oct 14, 2023
Oct 16, 2023
Sep 26, 2023
Jan 13, 2024
Oct 18, 2023
Dec 31, 2023
Oct 8, 2023
Oct 18, 2023
Oct 4, 2023
Oct 3, 2023
Sep 26, 2023

Repository files navigation

Camphouse

License: CC BY-NC-SA 4.0 status-badge

Post something amazing. ✨

About The Project

Camphouse is a simple, open-source, and self-hosted social media platform. It is designed to be easy to use and easy to deploy. It is built with Node.js, MongoDB, and Vue.js. It was originally called Aqurilla, but was renamed to Camphouse in 2023.

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

Before starting with the installation, ensure that the following prerequisites are installed and properly configured on your system.

  • Node.js - Necessary to run the server and execute the JavaScript code.
  • MongoDB - The database used by Camphouse to store user data and other information.
  • Docker (Optional) - If you prefer running the application inside a container.

Installation

Follow the steps below for installation and setup:

  1. Clone the repo

    gh repo clone VMGWARE/Camphouse
  2. Navigate into the project directory

    cd Camphouse
  3. Copy the .env.example file and rename it to .env.

    cp .env.example .env
  4. Open the .env file with your favorite text editor and fill in the configuration details.

    # Application configuration
    APP_PORT=3000                   # The port on which the app will run.
    SESSION_SECRET=<your_secret>    # A secret string used to secure user sessions.
    
    # Database configuration
    DB_NAME=camphouse               # The name of your MongoDB database.
    DB_HOST=localhost               # The host where your MongoDB server is running.
    DB_PORT=27017                   # The port on which your MongoDB server is accessible.
    DB_USER=<db_username>           # The username for your MongoDB database.
    DB_PASS=<db_password>           # The password for your MongoDB database.
    
    # JWT
    JWT_SECRET=<jwt_secret>         # A secret string used to sign JSON Web Tokens.
    
    # Admin
    ADMIN_HANDLE=<admin_handle>     # The handle for the initial admin account.
    ADMIN_EMAIL=<admin_email>       # The email address for the initial admin account.
    ADMIN_PASSWORD=<admin_password> # The password for the initial admin account.
    ADMIN_USERNAME=<admin_username> # The username for the initial admin account.
    
    # Sentry
    SENTRY_DSN=<sentry_dsn>         # The DSN for your Sentry project.
    
    # Storage
    MINIO_ACCESS_KEY=<minio_key>    # The access key for your MinIO server.
    MINIO_SECRET_KEY=<minio_secret> # The secret key for your MinIO server.
    MINIO_BUCKET=<minio_bucket>     # The name of the bucket to store images in.
    MINIO_ENDPOINT=<minio_endpoint> # The endpoint for your MinIO server.
    LOCAL_STORAGE=<true/false>      # Whether to store images locally. If MinIO is configured, this will be ignored.
    

    Replace the placeholder text (e.g., <your_secret>, <db_username>) with your actual information. Keep these details confidential.

  5. Continue with the installation of NPM packages and starting the servers as provided in the original guide.

    cd frontend
    npm install
    cd ../backend
    npm install

Start the backend server:

cd backend
npm run start

Start the frontend server:

cd frontend
npm run serve
  1. Access the application through your browser at http://localhost:8080.

Docker

  1. Pull the image

    docker pull insidiousfiddler/camphouse
  2. Run the container with your database credentials

    docker run -d -p 8000:80 insidiousfiddler/camphouse -e DB_HOST=<host> -e DB_PORT=<port> -e DB_NAME=<database> -e DB_USER=<username> -e DB_PASS=<password> -e SESSION_SECRET=<secret> -e JWT_SECRET=<secret>
  3. Visit the site at http://127.0.0.1:8000

A Quick warning. If you have LOCAL_STORAGE set to true. Make sure to assign a volume to the /usr/local/api/public/storage path. Otherwise, you will lose all your images when you restart the container.

Roadmap

See the open issues for a list of proposed features (and known issues).

General

  • Add MFA/2FA support for user accounts
  • Add page for reporting posts/users/comments
  • Add support for uploading images for user avatars, stored in an S3 bucket
  • Add footer to the frontend with links to the GitHub repo, license, and author
  • Email verification for new accounts
  • Update font to be one that isn't copyrighted/free

Admin

  • Add a admin panel
  • Add a page for viewing reported posts/users/comments
  • The panel should allow admins to manage users, posts, and comments
  • The panel should be able to delete DB entries that contain a specific user id
  • Allow deletion of user accounts, this will also delete all posts and comments associated with the account
  • Add a list for banned users/ips/emails to the admin panel

License

Distributed under the CC BY-NC-SA 4.0 License. See LICENSE for more information.

Contributions

Contributions are welcome! If you encounter any issues or have improvements to suggest, feel free to open an issue or submit a pull request.

Contact

For any questions or suggestions, please feel free to contact the author. You can also find more information about the author below.


A VMG Ware Project.