I think it is possible by using a web3 provider that runs on the mainnet. I think that infura (i.e. the same company of metamask) can be used to perform what you ask. Essentially you need this piece of code (taken from this github link):
const Web3 = require('web3')
// connect to Infura node
const web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/INFURA_KEY'))
Then you can actually send transactions (and therefore deploy contracts) as if you were running a geth instance locally, by following the common procedures. You need an infura key that can be obtained on this link.
You will need node and the web3 node package (npm install web3
), but this approach does not require neither a graphical user interface nor a synced geth instance on your raspberry.