# Install plugins without direct access to github

**URL:** <https://meta.discourse.org/t/install-plugins-without-direct-access-to-github/111718>\
**Category:** Product Support\
**Tags:** unsupported-install\
**Created:** [March 15, 2019, 4:24pm UTC](https://meta.discourse.org/t/install-plugins-without-direct-access-to-github/111718 "2019-03-15T16:24:10Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![Bram\_van\_Oploo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bram_van_oploo/32/134149_2.png) [@Bram\_van\_Oploo](https://meta.discourse.org/u/Bram_van_Oploo)\
**Post date:** [March 18, 2019, 10:55pm UTC](https://meta.discourse.org/t/install-plugins-without-direct-access-to-github/111718/13 "2019-03-18T22:55:44Z")

</div>

Thank you @Falco! I’ve got it working on a very restricted RHEL VM and a Ubuntu 18.04 VM with access to everything (for generating the image), using the supported installation method ([discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md)). The missing /sbin/boot command was what caused the [github.com](http://github.com) access error.

In summary and for documentation; the steps needed to create and image and run it on my server:

- Clone discourse:

```plaintext
git clone https://github.com/discourse/discourse_docker.git /var/discourse && cd /var/discourse

```

- Configure with default values

```plaintext
./discourse-setup

```

- Tweak the default discourse configuration (optional)

```plaintext
nano /var/discourse/containers/app.yml

```

- Get the local\_discourse/app IMAGE ID (something like **b6fa739cedf5** )

```plaintext
docker images -a

```

- Create your own tag for the image with the **IMAGE ID**

```plaintext
docker tag b6fa739cedf5 your-registry-url.com/namespace/image-name

```

- Push your image to your registry (you might need to login with **docker login [https://your-registry-url.com](https://your-registry-url.com)** first)

```plaintext
docker push your-registry-url.com/namespace/image-name

```

- On the server you’d like to create the discourse container, create a **docker-compose.yaml** file for your application (configure it to your specifications with something like…)

```plaintext
version: '3'

services:
  discourse:
    container_name: discourse_docker_custom
    image: 'your-registry-url.com/namespace/image-name:latest'
    restart: always
    shm_size: 512m
    command: /sbin/boot
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - '/shared:/var/discourse/shared/standalone'
    environment:
      - DISCOURSE_DEVELOPER_EMAILS=admin@email-address.com
      - DISCOURSE_SMTP_AUTHENTICATION=none
      - DISCOURSE_SMTP_OPENSSL_VERIFY_MODE=none
      - DISCOURSE_SMTP_ADDRESS=localhost
      - DISCOURSE_SMTP_PORT=25
      - DISCOURSE_SMTP_USER_NAME=
      - DISCOURSE_SMTP_PASSWORD=
      - DISCOURSE_SMTP_ENABLE_START_TLS=true
      - DISCOURSE_HOSTNAME=your.server.com
    networks:
      - discourse

networks:
  discourse:
    driver: bridge

```

- Install **docker-compose** ([Overview of installing Docker Compose | Docker Docs](https://docs.docker.com/compose/install/)) and run (within the directory that contains the docker-compose.yaml file):

```plaintext
docker-compose up -d

```

…and you’ll be up and running.

---

_[View the full topic](https://meta.discourse.org/t/install-plugins-without-direct-access-to-github/111718)._
