Link to a file outside public repository on Github - html

I recently created a webpage using Github pages. Since I don't have a paid account, the repository necessarily needs to be kept public. I'm okay with this, except for some .jpeg files which I would like to store in a different, private repository. When I did this and tried to provide a link to this file on the webpage, it didn't work.
Is there any way to do this?

You might consider a GitHub Actions like Deploy to GitHub Pages which introduces a build step workflow.
That step can have the necessary secret to access your private repository and fetch the .jpeg files you need to add them to the built repository.
But that means those files would be stored in the publication branch of your public repository.
From a public repository, you would not be able to just "add a link" to a private repository resource, without embedding in one way or another a secret token allowing you to access said private repository.

Related

Push file to another repository from another organization with github action

I own two GitHub accounts and would like to push one file from accountA/repoA to accountB/repoB in an automatic and periodic fashion through GitHub action.
I have come across some tutorials but they seem to be geared towards repositories in the same organization.
A simple simple script example or tutorial would be very useful.
The general idea would be an action like andstor/copycat-action.
That would require a Personal Access Token with access to org2/repo2
You schedule it on org1/repo1
You configure it to push a file to org2/repo2

How to block access to a static site?

I will host a static site (just a few pages actually) on Netlify, a cloud hosting provider. It would be my notes and may have sensitive code and API keys. I want it set up so that only I can access this site from internet and no one else. How can I block access to the static site for others?
Alternately, if I do the same with with Github Pages, is it possible to restrict access there?
You need an access control mechanism to protect your notes.
If you are running the web server doing the hosting, most web server programs (Apache and nginx are the two most popular) have built-in access control mechanisms, see link given by Carsten H or see Access Control with Apache or How to Set Up Password Authentication with Nginx (Digital Ocean guide).
If you are using Github Pages, it is possible to do access control, but a bit more tricky. You can create a Github OAuth application and ask people to authenticate using your Github OAuth app. The app will ask for their username, and check if that username matches a list of allowed Github users (probably just your Github username). If the usernames match, static content is served up, otherwise the user is redirected to a 403 forbidden page.
Also see the github-heroku-attack-rabbits project page for details of how to create the Flask app mentioned above (using flask-dance to authenticate users via your Github OAuth app). The Flask app can be hosted for free on Heroku.
Two more things to note regarding public/private repos:
If you are using Github Pages, the repository containing your notes will need to be private, otherwise the contents of your notes will be in a public repository (even if the Github Pages static page has an access control layer).
Just because a repo is private does NOT mean its Github Pages page is private. By default, a private repo's Github Pages page is accessible/readable by the public. It is up to you to put an access control mechanism in place to protect the page.
You can try the encryption route. Here, the name staticrypt really says everything (I have a demo here). It allows you to create a password for each page for your website. It used AES-256 encryption, so as far as I am concerned, a long password should suffice.
If you don't share the password, you will be the only one to view the webpage.
These are actually two questions and is good practice to ask them individually.
This is a frequently asked question and depends on your server, e.g. for Apache you can edit your .htaccess following this instructions
you need to create a private repository by checking the private repository option during the repository creation

private folder beside public_html on 000webhost

I host my website on 000Webhost.
I have to fill all my scripts for my website in the folder "public_html" (Example: /public_html/index.html).
I would like to have a "private" folder on the same level (Example: /private_html/variables.php) like public_html, but where only I can access and place things in it.
Is there any possibility for it or some other host which will support this function?
Private "stuff" is not meant to be on a web server. Create a small app server where you can a have a database and keep its IP private or get some security from the hosting service (better) and connect to it maybe from SSH (PuTTY) and then exchange files over it.
Anyway, a very basic workaround way to implement what you need is something like a PHP script that asks for admin credentials when a page under that folder with a URL(even if someone gets access to it when you would try to keep it private in the first place) is hit. From there, after you get authenticated, you can load the rest of the page using the same script which will basically present you a management tool or UI for yourself...Say if you'd want to upload some files or delete them.

GitHub Organization Pages without named repository

Is it possible to create a website for a GitHub Organization (using GitHub Pages) without creating a repository with the same name?
As an example, for the organization CompPyrol, I created a repository that has the same name as the organization as comppyrol.github.io. The html and css files for the website are located in this repository. So the website for the organization is located at http://comppyrol.github.io. This works but I was hoping to use GitHub pages for an organization without having to create a repository just for the website. I know you can create an orphaned branch gh-pages for the web files but that seems to be for an individual repository or project, not for an entire organization page.
This is not possible. GitHub's documentation is quite clear:
User & Organization Pages
User & Organization Pages live in a special repository dedicated to GitHub Pages files. You will need to name this repository with the
account name, e.g.
atmos/atmos.github.io
You must use the username/username.github.io naming scheme.
Content from the master branch will be used to build and publish your GitHub Pages site.
Update:
GitHub Pages used to be served as subdomains of github.com, but switched to github.io in April, 2013. Some repositories are still set up using the old naming, but are now hosted on the new domain:
Changes to GitHub repositories:
User Pages repositories may now be named using the new username/username.github.io convention or the older username/username.github.com convention.
Existing User Pages repositories named like username/username.github.com do not need to be renamed and will continue to be published indefinitely.
If both a username.github.io and a username.github.com repository exists, the username.github.io version wins.

Can I create more than one repository for github pages?

I created a repository for hosting a blog on github.Is there any way that I can create more to host multiple blogs?Am I limited to just one repository for hosting(since username.github.com can only be used once?)
You can have one site published to https://<username>.github.io by publishing to the master branch of a repository named “username.github.io” (substituting your actual username).
You can also have an additional site per GitHub project published to https://<username>.github.io/<project>. Project settings let you choose which branch and directory to publish.
A better description is available in the GitHub Pages documentation, including options for using custom domain names.
(since April 2013, all username.github.com are now username.github.io)
No you are not limited, it is possible to have multiple GitHub Pages sites within one account. Create another GitHub repository and push your site files to the gh-pages branch. This would result in the site being hosted at tshepang.github.io/repo-name
Now, push another file "CNAME" to the same repository and branch and fill it with movies.tshepang.net. Log in to your DNS host and add the CNAME to point to "tshepang.github.io" (just like the original site).
This would allow you to have seemingly two different sites on different domains. This would not work for having two or more sub-domains within github.io itself.
There is a possibility to host multiple pages within the same repository having sub-pages if you are fine with code duplication.
The latest version of my website is hosted on http://username.github.io/REPONAME
This is a screenshot of the structure of my root repository where I host the latest version of my website:
Inside folder "2.4.0" I can host a previous version of the same page ,which is then reachable at: http://username.github.io/REPONAME/2.4.0
This is the structure of the folder 2.4.0:
Using this methodology of sub-pages within a main page, you can host multiple sub-pages within one main page.
You can only create one user or organization site for each GitHub account. Project sites, whether owned by an organization or a user account, are unlimited.
GitHub Pages sites
There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub, such as a JavaScript library or a recipe collection. User and organization sites are connected to a specific GitHub account.
To publish a user site, you must create a repository owned by your user account that's named <user>.github.io. To publish an organization site, you must create a repository owned by an organization that's named <organization>.github.io. Unless you're using a custom domain, user and organization sites are available at http(s)://<username>.github.io or http(s)://<organization>.github.io.
The source files for a project site are stored in the same repository as their project. Unless you're using a custom domain, project sites are available at http(s)://<user>.github.io/<repository> or http(s)://<organization>.github.io/<repository>.
The publishing source for your GitHub Pages site is the branch and folder where the source files for your site are stored. If the default publishing source exists in your repository, GitHub Pages will automatically publish a site from that source. The default publishing source for user and organization sites is the root of the default branch for the repository. The default publishing source for project sites is the root of the gh-pages branch.
I found a workaround if you don't want to make separate repositories for your different sites but just want to host them. In your io repo, create an index.html file on your master branch that acts as a table of contents linking to your other sites(subDirectories) index.html files. The username.github.io master branch seems to be the landing page that enables the hosting, so if it doesn't see an index file linking out to your separate projects, it won't register your subdirectories. After this all you need is the URL to whatever project you want to view. The io basically behaves like a giant single website with all your separate projects on it. Of course, if you would rather have separate repositories, gh-pages is the way to go.
Today I created another site and rather than creating branch gh-pages I have configured the master branch in a repository setting --> GitHub pages section select Source as master (or any other branch you want). You will get site link in the same section, in my screen shot I have removed site link.
This works, but ssl is still something I need to figure.
In my case GoDaddy is where my domains rest (url1.xyz), with nameservers pointing to Cloudflare. Then in Cloudflare the A records points to Github Pages. This is website 1 live, running fine. For website 2 I create a subdirectly in my gh-pages repo with website 2 files e.g. url1.xyz/static/website2/ - Then I create a subdomain in Cloudflare (subdomain.url1.xyz). Then create a page rule (url forward) from the subdomain to the subdirectory containing the 2nd website e.g. subdomain.url1.xyz >> mask forward >> url1.xyz/static/website2/ .. Then in GoDaddy I can configure url2.co.uk to mask forward to subdomain.url1.xyz , which presents website 2 e.g. url1.xyz/static/website2/
Just to add to the above. With one github user account(https://< username >.github.io) we can still have multiple static content websites hosted with different custom domains (Eg: domain1.com, domain2.com, domain3.com)We can just create a new repository for each domain and point the A record to github pages IP and CNAME record to < username >.github.io
You can create multiple blogs in your github account.
One repository can be created under your username. Push your code to branch gh-pages and you can see the site on <username>.github.io
Another one can be created under your organisation. For this you will have to create your organization first. Create a new repository under this organisation and push your code to gh-pages. You can see your site on <organization-name>.github.io
You can also create for each of your project and the site will be available on <username>.github.io/<repository>
Please refer this for more information on github pages.